sql database - 表中的每一行,在不同的表中有额外的数据

时间:2015-11-03 22:24:13

标签: sql database relational-database relationship

我有一个表让它称之为MainTable,这个表的每一行都有几个公共字段,但是根据let的值,比如说field1,那么该行可以有一个或另一个字段,例如,如果field1为1,那么行最多存储一个field2和field3,如果field1为2那么行最多存储一个field4和field5,而field2 / field3与field4 / field5不同,即使在类型中,请一些帮助,我需要使用这些条件设计数据库的解决方案,我不知道如果将所有字段放在MainTable中或为额外数据创建不同的表,则field1的posibles值为30。

2 个答案:

答案 0 :(得分:2)

您需要了解 Database_normalization

您要问的是包含某些行而不是每一行的信息,因此您将拥有许多具有当前设计的空值的列。

您所做的是使用外键创建附加表和链接。

想象一下,你有一个带有字段

的表Cars
car_id, color, size, num_wheels

但有些汽车是休闲车,具有附加属性。因此,您无需在Cars表格中添加附加列,而是创建另一个表格RV_cars

car_id, bathroom_size, num_bed, bol_tv

所以,如果你想获得一辆车的所有信息,你可以

SELECT C.*, R.*
FROM Cars  C
join RV_cars R
  ON C.car_id = R.car_id

答案 1 :(得分:0)

尝试使用noSQL数据存储。如果我理解你 - 你会有大约15对不同的字段,所以关系数据库不适合你。或者你需要创建16个表(1个Main和15个extra数据)并在主表中按住键