2012-07-10 178 views
-1

我正在爲小型公寓管理網站創建數據庫。數據庫結構關係數據庫

基本上會有用戶的登錄表單,他們可以在其中插入他們的公寓,描述,照片。由於我將使用關係表,我想確保我正在創建數據庫。有人可以看看並發表他們的意見嗎?

USERS: 
    - id_user; 
    - username; 
    - password; 
    - email; 

APARTMENTS: 
    - id_apartment; 
    - id_user; 
    - title; 
    - description; 
    - map; 
    - gallery; 

GALLERY_IMAGES: 
    - id_gallery; 
    - id_apartment; 
    - image; 
+1

什麼是在公寓走廊領域?你不需要關鍵字段,因爲你在gallery_images表中有它。 – chiborg 2012-07-10 15:09:46

+0

@chiborg可能是'apartments'中的'gallery'是'boolean'。雖然,我不認爲這是必需的。 – 2012-07-10 15:15:46

+1

公寓有2個或更多的業主嗎? – jcho360 2012-07-10 15:26:39

回答

0

如果這確實是您的情況:(我猜)

公寓屬於用戶 公寓有0個或多個圖像

那麼你爲什麼引入的一個概念畫廊?

USERS: 
- id_user; 
- username; 
- password; 
- email; 

APARTMENTS: 
- id_apartment; 
- id_user; 
- title; 
- description; 
- map; 

IMAGES: 
- id_image 
- id_apartment; 
- image_path; 

如果是這種情況,那麼TBH畫廊是在公寓的事實圖片,我的意思是叫的話在你的GUI ...

做一些用戶有一個以上的公寓嗎?

1

看起來你的設計只允許「單元」與單個用戶相關。

我建議每個表的主鍵都是一個名爲id的整數列。 並且任何對該主鍵的外鍵引用都將被命名爲tablename_id

您需要檢查關係的基數。 「用戶」可以與多個「公寓」相關嗎? 「公寓」可以與多個「用戶」相關嗎? 「圖像」可以與多個「公寓」相關嗎? 等

當我們找到一個「多對多」關係時,我們通常用關係表來解決這個問題。

如果「公寓」可以,因爲涉及到不止一個「用戶」 ......

apartment (id PK, ...) 

user (id PK, ...) 

我們還要加上第三個表,與外鍵的獨特組合

user_apartment (user_id FK, apartment_id FK, UNIQUE KEY (user_id, apartment_id)) 

你似乎有一個「畫廊」的概念,它與你的「形象」概念是截然不同的。 (想想可以「唯一標識」的實例以及要存儲有關信息的實例)。

圖像是否可以位於多個圖庫中? 一個畫廊可以有多個圖像? 畫廊可以與多個公寓相關嗎?

如果圖像屬於一個畫廊和畫廊與恰好一個公寓,那麼我會實現爲...

gallery (id PK, apartment_id FK, ...) 
image (id PK, gallery_id FK, ...) 
+0

usingid作爲id字段的名稱是SQl反模式。 – HLGEM 2012-07-10 17:27:19

+0

@HLGEM:使用名爲'id'的列作爲每個表的主鍵是一種可行的方法,它具有一些顯着的優點。還有一些困難。通過爲主鍵列使用「id」以外的名稱,這些困難不會消失。 – spencer7593 2012-07-10 18:30:03