小型数据库实体的域和子域的概念
concept of domains and subdomains for small database entities
最近我学到了一个老师叫“域和子域”的概念,其中概括了小表,其中将保存少于5000个数据或行,我给你举个例子:
实体
enter image description here
级别日期:
id_level description
01 continent
02 country
03 state
域日期
id_domain detail level parent
01 America 01 -
02 USA 02 01
03 Europe 01 -
04 Africa 01 -
05 UK 02 03
06 Aberdeen 03 05
如果这个概念有另一个名字,知道它会帮助我很多。
然后我们必须对此进行抽象并将其带到常见实体,如下例所示:
enter image description here
级别日期:
id_level description
01 address
02 phone
03 gender
域日期
id_domain detail level parent
01 male 03 -
02 female 03 -
03 mobile phone 02 -
04 home address 01 -
05 home phone 02 -
06 work address 01 -
个人日期
id_person name phone_type phone_value address_type adress_value gender
01 Jhon 03 39249927 06 a place... 01
02 Mary 05 2489540300 04 a place2... 02
但是我收到一条错误消息,说当我尝试建立关系时键名重复
ALTER TABLE person
ADD CONSTRAINT FK_PERSON_DOMAIN
FOREIGN KEY (address_type)
REFERENCES domain(id_domain);
错误
Duplicate key name 'FK_PERSON_DOMAIN'
我应该补充的是我已经用phone_type嵌套了,之后它不允许我嵌套其他两个属性,如图所示
这是完美的关系:
ALTER TABLE person
ADD CONSTRAINT FK_PERSON_DOMAIN
FOREIGN KEY (phone_type)
REFERENCES domain(id_domain);
我称这些为“查找表”。它们通常具有行数少的特点,而且不经常变化。它们可能有一个整数 id
主键,或者它们可能有一个自然主键。
关于重复键名称的错误是由约束名称在架构中的所有表中必须唯一的规则引起的。换句话说,架构中必须只有一个名为 FK_PERSON_DOMAIN_PERSON
的约束。
您说您已经为 phone_type
列创建了一个具有此名称的约束。如果您想要 address_type
列的另一个约束,您必须为该约束选择一个不同的名称。
这是我的意思的一个例子:
ALTER TABLE person
ADD CONSTRAINT FK_PERSON_PHONE
FOREIGN KEY (phone_type)
REFERENCES domain(id_domain);
ALTER TABLE person
ADD CONSTRAINT FK_PERSON_ADDRESS
FOREIGN KEY (address_type)
REFERENCES domain(id_domain);
看到约束名称不一样了
最近我学到了一个老师叫“域和子域”的概念,其中概括了小表,其中将保存少于5000个数据或行,我给你举个例子:
实体
enter image description here
级别日期:
id_level description
01 continent
02 country
03 state
域日期
id_domain detail level parent
01 America 01 -
02 USA 02 01
03 Europe 01 -
04 Africa 01 -
05 UK 02 03
06 Aberdeen 03 05
如果这个概念有另一个名字,知道它会帮助我很多。
然后我们必须对此进行抽象并将其带到常见实体,如下例所示:
enter image description here
级别日期:
id_level description
01 address
02 phone
03 gender
域日期
id_domain detail level parent
01 male 03 -
02 female 03 -
03 mobile phone 02 -
04 home address 01 -
05 home phone 02 -
06 work address 01 -
个人日期
id_person name phone_type phone_value address_type adress_value gender
01 Jhon 03 39249927 06 a place... 01
02 Mary 05 2489540300 04 a place2... 02
但是我收到一条错误消息,说当我尝试建立关系时键名重复
ALTER TABLE person
ADD CONSTRAINT FK_PERSON_DOMAIN
FOREIGN KEY (address_type)
REFERENCES domain(id_domain);
错误
Duplicate key name 'FK_PERSON_DOMAIN'
我应该补充的是我已经用phone_type嵌套了,之后它不允许我嵌套其他两个属性,如图所示
这是完美的关系:
ALTER TABLE person
ADD CONSTRAINT FK_PERSON_DOMAIN
FOREIGN KEY (phone_type)
REFERENCES domain(id_domain);
我称这些为“查找表”。它们通常具有行数少的特点,而且不经常变化。它们可能有一个整数 id
主键,或者它们可能有一个自然主键。
关于重复键名称的错误是由约束名称在架构中的所有表中必须唯一的规则引起的。换句话说,架构中必须只有一个名为 FK_PERSON_DOMAIN_PERSON
的约束。
您说您已经为 phone_type
列创建了一个具有此名称的约束。如果您想要 address_type
列的另一个约束,您必须为该约束选择一个不同的名称。
这是我的意思的一个例子:
ALTER TABLE person
ADD CONSTRAINT FK_PERSON_PHONE
FOREIGN KEY (phone_type)
REFERENCES domain(id_domain);
ALTER TABLE person
ADD CONSTRAINT FK_PERSON_ADDRESS
FOREIGN KEY (address_type)
REFERENCES domain(id_domain);
看到约束名称不一样了