Rus*_*lan 1 sql sql-server database-design relational-database database-performance
我正在从头开始为新应用程序构建数据库模式,我的两个目标是松耦合(可扩展性)和性能(但性能是最重要的)。我不确定在中央表中包含外键列是否是一个好主意。使用示例可能可以最好地理解我的问题(请记住,这个示例纯粹是假设的):
我们有一张桌子,我们称这张桌子为“动物”。在此表中,我们有几个条目可以定义数据库中存储的各种类型的“动物”的属性。我们还有另一个名为“AnimalName”的表,其目的是将“Animal”表中每个动物的名称与语言 ID 一起存储(因此我们有一个表将每个动物的名称存储在“Animal”表中)每种语言的动物”表)。
我有两种方法来实现上表:
动物表:AnimalID (PK)
AnimalName 表:AnimalNameID (PK)、AnimalID (FK)、LanguageID (FK)、Name
查询将如下所示:
SELECT * FROM Animal a JOIN AnimalName an ON an.AnimalID = a.AnimalID and an.LanguageID = ? WHERE a.AnimalID = ?
动物表:AnimalID (PK)、AnimalNameID (FK)
AnimalName 表:AnimalNameID (PK)、LanguageID (FK)、Name
查询将如下所示:
SELECT * FROM Animal a JOIN AnimalName an ON an.AnimalNameID = a.AnimalNameID and an.LanguageID = ? WHERE a.AnimalID = ?
对于第二种方式,如果我要向 AnimalName 表添加“AnimalID”FK 列,那么它也将支持以第一种方式表达的查询。
上述哪一种方法将提供最快的性能(这一点至关重要!)?根据您的经验,您通常会推荐上述哪一种方法?
预先非常感谢所有回答的人!