我在製作文章網站。我有一個數據庫叫CATEGORIES
與表:Articles
,Entertainment
,Lifestyle
。 Articles
包含Entertainment
和Lifestyle
的所有條目。 Entertainment
包含娛樂類型的所有條目,Lifestyle
包含生活方式類型的所有條目。每個表有7列:id,類別(文章的類別),鏈接(文章的鏈接),標題(文章的標題),圖像(文章的圖像URL),Counter(文章的視圖數量),dateStamp(寫文章的日期)。在一個表格或多個表格中管理不同的類別?
擺脫Lifestyle
和Entertainment
表,並只依靠Articles
表會更有效嗎?我之所以將它們分開,是因爲當用戶閱讀時,讓我們說一個娛樂文章,隨機顯示一個娛樂文章列表。爲了顯示隨機文章,我在娛樂表中獲取最高的ID,獲取6到最高ID(6是我想要顯示的文章的數量)之間的隨機數,然後假設我從隨機生成器中獲得8,則會顯示第8至第3條(DESC LIMIT 6
)。下面的代碼:
<?php
$MAX_ID = $db->query("SELECT MAX(id) FROM Entertainment");
$MAX_ID = $MAX_ID->fetch_array();
$MAX_ID = $MAX_ID[0];
$RAND_NUM = mt_rand(6, $MAX_ID);
$resultSet = $db->query("SELECT * FROM Entertainment
WHERE id <= $RAND_NUM ORDER BY id DESC LIMIT 6");
if ($resultSet->num_rows != 0) {
$conditional = true;
$conditional2 = true;
echo "<div class='row'>";
while ($rows = $resultSet->fetch_assoc()) {
$image = $rows["image"];
$title = $rows["title"];
$link = $rows["link"];
$count = number_format($rows["Counter"]);
if ($conditional == true && $conditional2 == true) {
// display articles
} else {
// display other articles
}
}
}
如果我刪除了Entertainment
表,那麼這個查詢是行不通的,我不知道我會怎麼回事做到這一點。最後一個問題是,將表分成不同的類別還是將這些表合併到一個表中會更有效(性能方面)?
是的。看到正常化 – Strawberry
像草莓的意思我不會再去了解這個https://en.wikipedia.org/wiki/Database_normalization並在你的數據庫中使用它。如果你繼續按照自己的方式嘗試,你會很頭疼(他也告訴我,你的未來也會贊同這一點)。 – paskl
@Strawberry是對哪個問題? – user2896120