0

我正在为成员管理创建一个数据库。我们有元素(用户),这些用户有属性(例如,姓氏、姓氏、出生日期)。现在,名称是文本,但出生日期是日期,所以我想将其存储在数据类型为“日期”的列中。因为用户的属性可能不同,所以我想要一个带有元素的表格、一个带有属性的表格以及一个将两者链接在一起的表格。但是,为了能够使用不同类型的数据类型,对于每种数据类型,我必须创建一个不同的表。你会得到这样的东西:

Table: Users
------------
user
1
2

table: properties
---------------------------------
property  propertyName   datatype
1         surname        text
2         lastname       text
3         date of birth  date

Table: PropertiesString
---------------------------
property   value
1          John
2          Tim
3          Smith
4          Jones

Table: PropertiesDate
-------------------------
property   value
1          04-11-1966
2          07-08-1971

table: userPropertiesLinked
-----------------------------
user   property propertyValue
1      1        1
1      2        3
2      1        2
2      2        4
2      3        1
1      3        2

综上所述,我们有 2 个用户,John Smith (04-11-1966) 和 Tim Jones (07-08-1971)。

我的问题是:这是最好的方法吗?这个数据库的设置方式非常适合搜索,人们可以有多个属性,属性不会存储两次等。我遇到的问题是,一个表中的“属性”1 是 John,而在其他 04-11-1966。有没有办法使这些值唯一并自动递增,即使它们位于不同的表中?有没有办法将它们放在一个表中,而不会冒双重信息或空单元格的风险?

任何帮助将非常感激!

4

1 回答 1

0

我认为您可以考虑将外键与两个表连接但值相同,如下所示:

constraint PropertiesString_fk foreign key (value) references  PropertiesDate(or other table) value.

至于自动递增,你可以这样想:

ALTER TABLE tablename DROP id;
ALTER TABLE tablename ADD id INT NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST  

至于如何将它们放在一个表中,您可以使用命令“select”和“distinct”

于 2013-01-06T16:59:28.550 回答