在数据库中实现重叠的继承的最佳实践是什么?



让我假设,我有一个名为'name''的父表,两个名为'Malename'和'femalename'的子表格。

但有些名字都可以拥有(在亚洲国家/名字中更常见(。因此,我是否需要在Marename和feyalename表中存储此类名称。但这将触发冗余,不感觉不正确,或者我将第三个表格为" commonName"以持有这样的名称,这再次感觉不正确。

那么,解决问题的最佳实践是什么?

如果它不比您的示例更复杂,那么首先有一个以上的表是多余的,只需在名称表上有两列即可标记,如果是男性或女性,例如

CREATE TABLE Name
(
    Name VARCHAR(255) NOT NULL,
    Male BIT NOT NULL,
    Female BIT NOT NULL
);

如果您绝对需要MaleNameFemaleName作为对象,则可以始终创建视图:

CREATE VIEW dbo.MaleName
AS
SELECT  Name
FROM    dbo.Name
WHERE   Male = 1;

假设这不像您的示例那样简单,那么处理此问题的一种相当常见的方法是与一个协会实体(交界表(,因此您最终会得到3个表,类似

之类的东西

名称(nameid(pk(,名称(

性别(Genderid(PK(,描述(

namegender (nameid(pk,fk(,gendiD(pk,fk((

最后,如果您将其设置在继承方法上,则如果您正确执行操作,则不会引起冗余。男性和女性名字共有的任何属性都应存储在父表中,因此两个子表中的任何信息都不是多余的

相关内容

最新更新