我正在設計一個基本上必須存儲兩種元素的網頁應用程序:帖子和容器(這是帖子數組)如何關聯兩個MySQL表中的數據?
我已經完成了數據庫,以便我在容器的每一行中存儲字符串版本它擁有的帖子數組。
問題是,當我每次打電話給容器時都會刪除一個帖子,我有帖子的ID,我必須檢查帖子是否存在。
有沒有更好的方法來做到這一點?例如構建容器表以將「指針」保存到實際的帖子中?
非常感謝!
我正在設計一個基本上必須存儲兩種元素的網頁應用程序:帖子和容器(這是帖子數組)如何關聯兩個MySQL表中的數據?
我已經完成了數據庫,以便我在容器的每一行中存儲字符串版本它擁有的帖子數組。
問題是,當我每次打電話給容器時都會刪除一個帖子,我有帖子的ID,我必須檢查帖子是否存在。
有沒有更好的方法來做到這一點?例如構建容器表以將「指針」保存到實際的帖子中?
非常感謝!
這裏回答我的評論,收到一些積極的反饋:)雖然你已經有答案了。
您的容器將持有帖子。所以就像一個籃子裏放着許多物品。 因此,每個帖子都有一個容器ID。對於容器表 - 容器ID是主鍵。帖子表 - 帖子ID是主鍵。要擁有外鍵關係,您需要在您的張貼表中將您的容器標識設置爲外鍵。如果這是令人困惑的 - 請參閱下面的表格模式。如果您希望刪除容器時與容器相關的任何帖子,則可以使用父鍵(外鍵)上的ON CASCADE DELETE
刪除任何孤兒(沒有父母的兒童)。 如果您希望自動增加ID,您可以使用AUTO_INCREMENT
,否則只需將其刪除即可。
請看一看sql syntax進一步瞭解。
CREATE TABLE tblParent (
`CID` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
`field2` varchar(100),
`field3` varchar(100)
);
CREATE TABLE tblchild (
`PID` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
`PCID` int NOT NULL,
`field2` varchar(100),
`field3` varchar(100),
FOREIGN KEY REFERENCE tblParent ('CID')
ON DELETE CASCADE
);
這是完全的,並且完全回答我的問題,謝謝! – dpi
我不確定我是否正確理解了你,但是我會以相反的方式做到這一點:你有你的POST表,它有一個名爲container_ID的字段。如果帖子被刪除,那麼POST表中的一行將被刪除(包括container_ID中其父實體的指針)。在這種情況下,您可以在表之間創建外鍵關係,以保持數據庫中的數據一致和關係完好。請澄清我是否誤解了某些內容。
例如,您可以創建第三個包含兩個字段'container_id'和'post_id'的表。 然後,當您刪除帖子時,您將刪除包含post_id的所有條目,對容器也是同樣的東西。確保表primary_key由two_fields組成以避免條目重複。
這會在帖子和容器之間創建一個「多對多」的關係......如果這是主意,那就去...但如果這個想法是「一個容器包含許多帖子,但帖子只屬於一個容器「,那麼這會增加設計的複雜性 – Barranka
如果我理解正確,你有一對多的關係:每個容器可以有很多帖子,但每個帖子都與一個容器相關。所以你的數據庫設計應該反映這個。
例子:
create table tbl_containers (
containerId int unsigned not null auto_increment primary key,
containerDescription varchar(100)
);
create table tbl_posts (
postId int unsigned not null auto_increment primary key,
containerId int unsigned not null,
postText varchar(100),
index idxContInd(containerId)
);
當您填寫您的資料,每一個崗位必須與容器相關聯;換句話說,在可以輸入帖子之前,必須有一個容器來容納它,並且如果沒有「合適的」容器,則應該在之前創建創建帖子。
將數據存入表格後,可以輕鬆查找帖子並刪除它們,而不管每個帖子所屬的容器。
希望這可以幫到你
在兩張表之間使用外鍵關係將是理想的。
首先,如果我正確理解您的數據之間的關係,您的Container
表將保存與唯一ID有關的信息的表。然後,Posts表擁有自己的唯一ID,一個containerId和發佈內容本身。
畫出來,它看起來有點像這樣。
Container
---
id
Posts
---
id | containerId | post
Container
和Posts
之間的關係被認爲是一個到多;也就是說,一個容器可能有很多帖子,但是一個帖子不能屬於許多容器。如果你想要這種關係,你可能需要爲Posts
添加另一列。
您可以使用外鍵關係來關聯這兩個表。然後檢查[級聯刪除](http://publib.boulder.ibm.com/infocenter/idshelp/v10/topic/com.ibm.sqls.doc/sqls118.htm):) – bonCodigo
@bonCodigo +1。您應該將您的評論發佈爲答案,並稍微擴展一下。 –