双语站点的良好数据库设计:布尔与元表?

时间:2013-01-27 16:15:00

标签: database database-design multilingual

我正在创建一个包含游戏音乐会列表的网站。它将是英语和日语。

音乐会在场地举行。我想用英语和日语存储有关场地名称和地址的数据。我还想允许为它们存储替代名称,例如“Konserthuset”和“斯德哥尔摩音乐厅”。前者是瑞典语的名字。语言为瑞典语的事实对于存储在数据库中并不重要。但如果是日本人,我希望存储。

因此,一个地点可以有多个地址和名称。城市和国家不需要两个字段(和id),英文名称和日文名称。

选项1:

table Venue
  id (pk)
  cityId
  description

table VenueName
  venueID (fk)
  name
  IsJapanese (boolean)

table VenueAddress
  venueID (fk)
  address
  IsJapanese (boolean)

table City
  id (pk)
  name
  japaneseName
  countryId (fk)

table Country
  id (pk)
  name
  JapaneseName

选项2:

 Venue
   id (pk)

 Information
   venueID (fk)
   infoTypeID (fk)
   text

 InfoType
   id (pk)
   name

这就是我所说的元表(正确的术语?)。相当灵活,但我想知道查询将如何。 InfoTypes的示例可以是EngName,JpnName,EngAddress,JpnAddress,EngCity,JpnCity等。


我知道我还有很多其他方法可以构建数据库。这些都是良好的数据库设计吗?你有什么更好的解决方案?

1 个答案:

答案 0 :(得分:2)

如果您将此作为练习,则选项1没问题。但是从长远来看,选项2更灵活 - 例如,当您决定用德语,俄语或普通话来表示场地名称时。