数据库表设计1
时间:2015.4.21.17:50
学习编程2年了,第一次分析需求。总结下我对建表的理解。
1.数据库中存储表,表是对象的集合。
2.表中字段是对象属性。
3.表与表之间关系分1:1,1:N或N:1,N:N。
4.1:1的理解
球队 地址
球队id | 球队名 | 地址id(外键) |
QID | NAME | DID |
地址id | 地址名 |
DID | NAME |
这是外键关联。通过DID。
球队 地址
球队id | 球队名 |
QID | NAME |
球队id | 地址名 |
QID | NAME |
这是主键关联,通过QID
分析:球队和地址关系。一个球队有一个地址,一个地址对应一个球队(不考虑2个球队共用一个地址)。
个人思考:我认为1:1很有意思。如果没有别的表与地址表关联的话,地址表可以不要,直接在球队表中加入一个字段“地址名”。因为球队表与地址表1:1.也就是说球队表与“地址名”1:1.这也就是表与属性的对应。
5.1:N或N:1
人 省份
人id | ID |
姓名 | NAME |
省id | SID |
省id | 省名 |
SID | NAME |
分析:一个人属于一个省,一个省有很多人。
个人思考:这种情况只有一种关联。人是子表,省份是总表。管联外键放在子表中。为什么呢?这样理解:放在人表中,一个人只对应一个省id,也就是一个省。如果管联字段放在
省份表中,那就是表中加一个“人id”字段。表对应的对象就是一个省有一个“人id”,就是一个人。但是与实际不符。实际是:一个省有很多人。
6.N:N
学生 选课
学号 | 姓名 |
SID | NAME |
课程id | 课程名 |
XID | NAME |
学-课
学号 | 课程号 |
SID | XID |
分析:一个学生有多门课,一门课有多个学生学。
个人思考:这种多对多也是一种关联。需要建一个中间表,表中是关联的表的主键。SID和XID是中间表(学-课)的联合主键。学生表和选课表不需要加关联词。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。