2011-07-22 116 views
0

我正在開發一個項目(基於Django,雖然這與我的問題沒有多大關係),我正在努力找出表示數據模型的最佳方法。數據庫設計 - 管理這些關係的最佳方式

我有四個以下型號:

用戶, 客戶端, 會議, 位置

用戶和客戶端必須通過會議模式多對一對多的關係。會議模型與位置模型具有一對一的關係。

會議將在任一:

  1. 在用戶(或用戶配置)模型
  2. 在客戶機模型定義的地址所定義的地址。
  3. 某些其他位置必須在以後定義。

我正在努力研究存儲位置數據的最佳方法,以使其儘可能乾淨和可重用。

  • 我認爲做位置作爲會議模式,而不是在自己的權利模型的領域 - 雖然這也可能導致如果在同一位置創建了大量會議的冗餘數據,所以這可能是一個非首發。

  • 我可以爲創建的每個用戶和客戶端自動創建位置記錄,並使用相關記錄之間的通用關係,但是,我知道這會導致數據庫性能低下。另外,並非每個客戶/用戶都能夠在他們的位置舉行會議。

任何人都可以看到一個整潔的替代品嗎?

任何意見讚賞。

謝謝。

回答

1

我認爲做位置作爲會議模式,而 不是在自己的權利模型的領域 - 但如果在同一位置創建了大量的會議,這可能也導致 冗餘數據, 所以這可能是一個不起眼的人。

不,這是一個真的好的想法,因爲它指出你直接面對真正的問題。

真正的問題是會議與參加會議的各方有區別。會議有一些與會者無關的屬性:至少有一個時間和一個地方。

所以我認爲你應該改變你對會議模型的想法。

而不是通過會議模型與客戶有M:N關係的用戶,他們應該有一個M:N關係,比如考勤模式。 (註冊或預訂或MightAttend模式可能更適合您)。會議模型應該改變以反映真實世界會議的獨特屬性:時間和地點。

1

我期望會議和地點有多對一的關係。一個地點不能用於多個會議嗎? (在不同的時間,當然)

在我看來,一個位置的屬性超出了一次會議的使用範圍。例如:座位容量。