2011-11-03 38 views
0

我試圖設計一些表,並想知道如果我錯過了正確的方式來做到這一點。例如,我有一個'主'表(可容納任何頂級通用信息),並且在'表'中有一個字段。現在我爲每個'類型'有不同的表格,所以我使用if語句來獲取正確的信息。根據字段值引用不同的表

所以選擇*從主要 - >然後使用該類型字段值來確定我需要從哪個表中獲取我的更詳細的信息。如果類型是1查詢TableA ...如果類型是2查詢TableB ...等...

現在,這是工作......有一個固定數量的'類型',但我很無奈在這種情況下任何好的JOIN語句。

這是否有意義?就像我這樣做是一個真正搞砸的方式....感謝您的任何幫助或建議。

+0

其實,最終找到一些相關的帖子......它看起來像我在做什麼就像一個「枚舉」類型?與僅僅使用int相比,有什麼優勢?我可以把表名作爲枚舉類型嗎? – thejason

+0

不知道如何搜索沒有提出這一點,但相關的帖子http://stackoverflow.com/questions/1270359/db-design-save-different-details-of-payment-credit-or-check正在問什麼我很清楚得多。 似乎我的多表方法是可以的。 – thejason

回答

0

根據您使用的語言,您可以動態生成您的SQL,將'type'表放入動態SQL中,並以這種方式進行JOIN。我們在使用C++,C#,PHP和SQL Server存儲過程的應用程序中執行此類操作,動態SQL是我們的解決方案。

+0

我正在使用php/mysql。如果有類似的東西存在,只是會讓我的生活更輕鬆,我會調查。我真的只是想知道這是不是最糟糕的設計 - 它只是不'感覺正確'。似乎我最終將這些鏈式ID整合到了多個表格中。 – thejason

+0

如果上面提到的帖子滿足您的需求,那麼請盡一切努力。但是,如果您需要動態SQL,則始終可以將查詢構建爲字符串,並在運行時將表名串聯起來。 – drdwilcox

相關問題