2 mo   chen mo___chen 于 2014.11.19 21:20 提问

数据库该如何设计 主外键应该怎么建

现在想做一个类似糗事百科的网站 数据库不知道怎么弄 求大神帮忙!

5个回答

caozhy
caozhy   Ds   Rxr 2014.11.20 10:34

简单来说,主键就是在1对多关系中1的那个,外键就是多的那个。比如两个表:User表有id,Topic表有userid,那么前者是主键,后者是外键。

fredrickhu
fredrickhu   Ds   Rxr 2014.11.20 09:42

其实要做得简单的话,直接几个表就OK了

一个糗事记录表
ID
内容

一个糗事详细记录表
ID
内容
分类(热门、精华、。。。。)
其他一些需要加的内容
踩还是赞

一个评论表
ID
楼层
评论内容
图片路径
踩还是赞

一个用户表
内容自己去想想

如果需要权限的话 再加个权限表

oSanYeCao1234567
oSanYeCao1234567   Ds   Rxr 2014.11.21 15:50

首先你得弄明白,什么是主键。所谓主键,就是唯一标示一个实体的属性,并且不可分割;外键,即是另一张表的主键,与以其他表建立联系

DBA_Huangzj
DBA_Huangzj   Ds   Rxr 2014.12.26 11:06

做得好的设计可不是一次完成的,最近在设计公司的数据库,改了接近100次了。一步一步来吧。至于主外键,外键可以先放一下,主键的含义是唯一标识数据,这个一般可以用自增列或者业务键,但是如果考虑性能,自增、数据类型窄、唯一这些都是非常重要的,实在没有这些键,可以加一个自增序列,然后在需要频繁查询的列上加非聚集索引,更多信息可以看我的书(头像那本)

ya_1249463314
ya_1249463314   2016.09.12 15:59

反正设计主键和外键都是根据需求来的,我一般都是数据库设计中并没有建立外键关系,通过程序的逻辑去创建的这种外键关系。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
数据库建表时一定要设置外键约束关系吗?
数据库建表时一定要设置外键约束关系吗? 我们都知道每张数据表都有一个能够确定每行数据唯一性的字段,也就是主键。而在关系数据库中,常常有两表存在一定关系的情况。即一张表的主键跟另一张的外键存在对应关系,我们知道这种关系是存在的,那么我们在创建数据库表的时候是否一定要把外键关系约束加上呢?因为一旦创建了这个关系,在开发中就可能遇到莫名其妙的问题,所以我一般都是不设置外键关系,只设置主键约束。
数据库是否应该应用外键的一点思考
最近看了和尚师傅的数据库设计。数据库表都是孤立的,不存在外键关系。虽然放弃了EF引以为傲的懒加载和导航属性等特性,实际编码量也会增大。但是带来的优点是灵活性非常高。表和表之间没有任何约束。当然这点也可以认为是有点。           我一直以为这种设计在互联网场景下比较适合。企业内部相对不变的管理系统可以使用主外键来提高开发速度,减少代码量。最近一个系统在上线之初就遇到了很大的分歧。用户几乎想
数据库设计中一个矛盾:数据库外键,用还是不用
最近在做一个派单系统数据库设计,在设计中有些疑惑的地方中午在网上发起一个话题讨论. 我把这个讨论流程.发过来 大家可以可以看看. 也可以发表一下自己的意见. 对于主/外键/索引来说,在一些开发团队中被认为是处理数据库关系的利器,也被某些开发团队认为是处理某些具体业务的魔鬼,您的观点呢?在实际应用中您会采取哪种方式? 大家共同观点: 主键和索引是不可少的,不仅可以优化数据检索速度
数据库主从表关系,主外键关系
数据库主从表、关系;主、外键关系和作用(转) 从数据库是主数据库的备份,当主数据库变化时从数据库要更新,这些数据库软件可以设计更新周期。这是提高信息安全的手段。主从数据库服务器不在一个地理位置上,当发生意外时数据库可以保存。 主外键的关系结构: 1,一对一,不用引用主外键,把它们放一个表中即可 例如:一个学生只能有一个卡号,那么学生跟卡号放在一个表中即可 2,一对多,引用主外键,
工程上为什么建表时不设置外键?
问题 一直有个疑惑,在大型工程上表之间的外键关系只在ER图上体现,却没有在建表的时候设置外键(如往数据库新建表时对外键没有限制),问了架构师和查阅相关资料后整理了一下。 总结 在大型系统中(性能要求不高,安全要求高),最好使用外键(外键可以增强数据库数据的完整性和一致性) 在大型系统中(性能要求高,安全自己控制),不用外键(有外键约束的话,插入字
Oracle查询数据库主外键关系
select user_cons_columns.constraint_name as 约束名,          user_cons_columns.table_name      as 子表名,          user_cons_columns.column_name     as 子表列名,          user_cons_columns.position        as
MySQL 创建主外键
外键定义语法: [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, …) REFERENCES tbl_name (index_col_name, …) [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}] [ON UPDATE {RESTRICT | C
数据库主外键设计
一、什么是主键、外键: 关系型数据库中的一条记录中有若干个属性,若其中  某一个属性组(注意是组)能唯一标识一条记录  ,该属性组就可以成为一个主键  比如   学生表(学号,姓名,性别,班级)  其中每个学生的学号是唯一的,学号就是一个主键  课程表(课程编号,课程名,学分)  其中课程编号是唯一的,课程编号就是一个主键  成绩表(学号,课程号,成绩)  成绩表中单一一
大家设计数据库时使用外键吗?
外键是否采用看业务应用场景,以及开发成本的,大致列下什么时候适合,什么时候不适合使用: 1. 互联网行业应用不推荐使用外键: 用户量大,并发度高,为此数据库服务器很容易成为性能瓶颈,尤其受IO能力限制,且不能轻易地水平扩展;若是把数据一致性的控制放到事务中,也即让应用服务器承担此部分的压力,而引用服务器一般都是可以做到轻松地水平的伸缩; 2.传统行业 1>.软件应用的人数有限,换句话
为什么有人说不建议建立表与表之间的主外键关系
使用外键有利于维持数据完整性和一致性,但是对于开发来说是非常不利的。  每次做DELETE 或者UPDATE都必须考虑外键约束,会导致开发的时候很痛苦,而且需要更为复杂的错误捕获机制。  做数据处理时会受到很多的束缚,有些地方本来就可以允许有部分冗余,但是由于设计了外键约束,只能放弃。  出现BUG的时候追踪很麻烦。  总的来说,自己来掌握数据总比别人去掌握要方便。  目前我们公