组织mysql中的帮助:表VS列

时间:2011-05-23 19:01:40

标签: mysql performance user-tracking

原因

我正在组织一个系统,以便每周在音乐乐队中保持协助/准时的轨道。我们大约有40个人,我想如何组织它。我需要保存2件事,抵达时间和理由。 我还在数据库中拥有属于乐队的所有成员,并且我标记他们当前是否处于活动状态。我不想删除任何成员的数据,但新成员可能会进入乐队。

选项

  1. 为每个用户创建一个表,并为每天创建一个条目,引用他到达的时间以及原因:
    • 3栏
    • 1行/周
    • 40张表(或更多)
  2. 创建一个表格以及抵达表格:
    • 1个初始+ 1列/周
    • 每桌40行(或更多)
    • 2桌
  3. 每天创建一个表格:
    • 每桌3列
    • 40行/表(或更多)
    • 1桌/周
  4. 那么......哪个更有效率?

1 个答案:

答案 0 :(得分:2)

尝试这样的事情:

BandMembers表:

BandMemberId(整数), FirstName(varchar), LastName(varchar), DateInserted(日期/时间), 活动(布尔/位)

出勤表:

AttendanceId(整数), BandMemberId(整数), 到货(日期/时间), ReasonId(整数)

更新原因表:

原因表:

ReasonId(整数), 原因(varchar)

这样您就可以将出勤表加入BandMemberId上的BandMember表。


更新5/25新要求:

由于您需要存储有关每次排练/会议的信息,我会这样做:

BandMember表:

BandMemberId(整数),FirstName(varchar),LastName(varchar),DateInserted(日期/时间),Active(布尔/位)

事件表:

EventId(int),EventName(varchar),EventDate(datetime),EventTypeId(int)

EventType表:

EventTypeId(int),EventDescription(varchar)

BandMemberEvent表:

BandMemberEventId(int),BandMemberId(int),EventTypeId(int),TimeArrived(日期/时间),ReasonId(int),EventId(int)

原因表:

ReasonId(int),Reason(varchar)