使用phpmyAdmin(复合键)的数据库关系
我对制作一个好的关系数据库感到困惑。我正在使用phpmyAdmin来创建一个数据库。我有以下四个表格。不要担心这个事实,地点和价格是可选的,他们只是。使用phpmyAdmin(复合键)的数据库关系
- 人(强制性)
- 项目(强制性)
- 广场(可选)
- 价格(可选)
项目是主表。它会一直有人链接。 *我知道你会在表中加入mysql。 如果我想将表连接在一起,我可以使用组合键(使用每个表的ID),但是这是链接表的最正确方法吗?这也意味着项目将有5个包括它自己的ID。这一切都导致空值(显然是一个大的不,不,我可以理解),因为如果地点和价格是可选的,并且不用于项目表的一个条目,那么我将在那里有一个空值。请帮忙!
在此先感谢。我希望这是有道理的。
NULL值
这也意味着项目将有5个IDS包括它自己。这一切都导致空值(显然是一个很大的不,不,我可以理解),因为如果地方和价格是可选的,在一个条目的项目表中没有使用我将有一个空值有
我个人认为这是一种情况,其中NULL
值是完美的,我当然不会有任何怀疑将它放入我的数据库设计中。
有一种方法,我看到其他人实现同样的事情没有NULL
价值观是创建一个记录在可选表(在您的示例中的地点和价格)ID为0,表示没有相关记录 - 但这只是为应用程序的开发人员进行10次以上的工作以过滤这些记录 - 进行联接更容易,并且如果您没有取回任何记录,则可选表中没有相关记录。
记得刚做了,如果你想返回Item
LEFT
或RIGHT OUTER
的JOIN不管他们是否有Place
或Price
相关的(你会得到可选表中的列NULL
值没有那个Item
小号关联记录)和INNER
加入如果您只有想要Item
s 做有一个关联的可选记录。
复合密钥
复合键是在该得分由一个以上的列的表中的键。如果您的每个Person
,Item
,Place
和Price
都有一个ID(即使它只是一个自动递增的数字),您将不需要组合键 - 每个表中的主键列和外键列每个相关表的Item
表 - 例如item_id
,person_id
,place_id
, price_id
。您声明Item
拥有自己的ID,因此您不需要组合键 - 只是item_id
列中的主键。
你会如何确保在INSERT上填写正确的ID?例如,当我插入我没有得到正确的ID为其他表我需要用mysql语句做到这一点? – 2010-04-18 18:25:32