具有多个条目的属性的数据库表设计(例如:Person - > Social Media)

时间:2016-01-10 14:36:00

标签: java mysql database database-design

我正在尝试确定用于存储Employee数据的DB表的结构。我对如何设计地址,社交媒体等属性感到困惑。应该为单个员工记录提供多个社交媒体条目(例如:Facebook,Twitter,LinkedIn等)。

哪一个是好的设计:

  1. 为社交媒体创建单独的表(包含type和URL / hanlde) OR
  2. 在employee表本身内创建几个重复字段以存储社交媒体数据。 (例如:fb_url,twtr_handle,ln_url)
  3. 为这些属性创建单独的表是否过分?属性“社交媒体”只是一个例子,我们将在employee表中有许多属性,这些属性将包含1到4个条目(例如:电话号码,地址,电子邮件地址)

    由于

2 个答案:

答案 0 :(得分:1)

在NoSQL DataBase中,我选择2。 在关系模式中,我认为选项1更好。如果你想添加一个新的社交媒体(Instagram f.i.),它将只是社交媒体表中的另一个条目。但是,如果您在Person中添加社交媒体,则需要在表格中添加新列。

答案 1 :(得分:1)

两种解决方案都有效。

不为SocialMedia信息创建单独的表的主要缺点是需要在Employee表中为每个将来存在的新社交媒体类型添加新列。当应用程序已经投入生产时,对数据库模式进行更改通常会有点痛苦。

所以,记住这一点,我建议创建一个单独的SocialMedia表,它将具有以下结构:

| SocialMedia | username | employeeId |

其中employeeId列将是Employee

的外键