目錄
回覆內容:
首頁 後端開發 php教程 請教下各位,就是在論壇寫文章的時候會有個給文章加標籤的功能,請問這個資料庫應該怎樣設計?

請教下各位,就是在論壇寫文章的時候會有個給文章加標籤的功能,請問這個資料庫應該怎樣設計?

Aug 04, 2016 am 09:19 AM
java mysql oracle php

我有想過存在文章表,用戶輸的標籤又沒辦法控制的,這樣的話就沒辦法對標籤進行管理.比如現在我想要用標籤做一個條件查詢就不行.

回覆內容:

我有想過存在文章表,用戶輸的標籤又沒辦法控制的,這樣的話就沒辦法對標籤進行管理.比如現在我想要用標籤做一個條件查詢就不行.

建立一個標籤表。標籤表裡面是標籤ID,Name等,建立一個關聯表,然後儲存ArticleID,TagID,然後輸入或抓取文章的時候提取標籤。先判斷標籤表是否有已經取得的標籤,沒有就更新,然後將標籤的ID存入關聯表,再再加上文章的ID。到時候更新的時候,可以直接透過關聯表取出,這樣就可以成功顯示了。

資料庫的設計有三大範式,
1.是資料庫中的字段是原子的,不能再進行拆分。標籤貌似符合,但是標籤也有標籤單獨的屬性,如果後期要根據標籤單獨篩選出列表的話,不方便。

<code>CREATE TABLE `user_label` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '类型',
  `lable_name` varchar(255) NOT NULL COMMENT '标签名称',
  `user_id` int(11) NOT NULL COMMENT '创建者',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='标签表';</code>
登入後複製

標籤放單獨的資料表,貼文資料表放一個tags字段,用|分割,標籤中不允許出現‘|’字元。

建立一個表格存放標籤的 文章表新增一個欄位存放標籤id 當使用者新增標籤 偵測標籤是否重複 存放到標籤表裡 然後 更新文章表裡的標籤欄位

兩張表

  • 建立一個標籤表

  • 一個文章標籤關聯表,欄位為文章ID和標籤ID
    這樣查詢的時候只要查詢關聯表標籤對應的文章ID即可。

這應該是資料庫設計中的多對多關係吧,設計3張表文章表標籤-文章關聯表標籤表, 標籤文章表裡設定雙主鍵,分別是標籤表跟文章表的ID, 查詢的時候可以使用join語句直接過濾出想要的結果,還有一種方法在新的mysql5.7裡使用json來存放tag數據這樣可以避免設置多張表如果答案錯誤,麻煩指出,如果滿意,請幫我點贊謝謝

我認@ivanilla說的對,這樣的錶設計就差不多可用了。也不用多表關聯查詢標籤字段,使用起來也簡單。

手上剛好有紙,直接畫了個簡單的E-R圖
請教下各位,就是在論壇寫文章的時候會有個給文章加標籤的功能,請問這個資料庫應該怎樣設計?

不知道別亂踩好不好,我的回答雖然沒能直接幫他解決,可是也是一個非常好的思路。傻逼繞道,謝謝

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
session_start()函數的意義是什麼? session_start()函數的意義是什麼? May 03, 2025 am 12:18 AM

session_start()iscucialinphpformanagingusersessions.1)ItInitiateSanewsessionifnoneexists,2)resumesanexistingsessions,and3)setsasesessionCookieforContinuityActinuityAccontinuityAcconActInityAcconActInityAcconAccRequests,EnablingApplicationsApplicationsLikeUseAppericationLikeUseAthenticationalticationaltication and PersersonalizedContentent。

怎樣卸載MySQL並清理殘留文件 怎樣卸載MySQL並清理殘留文件 Apr 29, 2025 pm 04:03 PM

要安全、徹底地卸載MySQL並清理所有殘留文件,需遵循以下步驟:1.停止MySQL服務;2.卸載MySQL軟件包;3.清理配置文件和數據目錄;4.驗證卸載是否徹底。

給MySQL表添加和刪除字段的操作步驟 給MySQL表添加和刪除字段的操作步驟 Apr 29, 2025 pm 04:15 PM

在MySQL中,添加字段使用ALTERTABLEtable_nameADDCOLUMNnew_columnVARCHAR(255)AFTERexisting_column,刪除字段使用ALTERTABLEtable_nameDROPCOLUMNcolumn_to_drop。添加字段時,需指定位置以優化查詢性能和數據結構;刪除字段前需確認操作不可逆;使用在線DDL、備份數據、測試環境和低負載時間段修改表結構是性能優化和最佳實踐。

MySQL批量插入數據的高效方法 MySQL批量插入數據的高效方法 Apr 29, 2025 pm 04:18 PM

MySQL批量插入数据的高效方法包括:1.使用INSERTINTO...VALUES语法,2.利用LOADDATAINFILE命令,3.使用事务处理,4.调整批量大小,5.禁用索引,6.使用INSERTIGNORE或INSERT...ONDUPLICATEKEYUPDATE,这些方法能显著提升数据库操作效率。

如何使用MySQL的函數進行數據處理和計算 如何使用MySQL的函數進行數據處理和計算 Apr 29, 2025 pm 04:21 PM

MySQL函數可用於數據處理和計算。 1.基本用法包括字符串處理、日期計算和數學運算。 2.高級用法涉及結合多個函數實現複雜操作。 3.性能優化需避免在WHERE子句中使用函數,並使用GROUPBY和臨時表。

MySQL的字符集和排序規則如何配置 MySQL的字符集和排序規則如何配置 Apr 29, 2025 pm 04:06 PM

在MySQL中配置字符集和排序規則的方法包括:1.設置服務器級別的字符集和排序規則:SETNAMES'utf8';SETCHARACTERSETutf8;SETCOLLATION_CONNECTION='utf8_general_ci';2.創建使用特定字符集和排序規則的數據庫:CREATEDATABASEexample_dbCHARACTERSETutf8COLLATEutf8_general_ci;3.創建表時指定字符集和排序規則:CREATETABLEexample_table(idINT

作曲家:PHP開發人員的軟件包經理 作曲家:PHP開發人員的軟件包經理 May 02, 2025 am 12:23 AM

Composer是PHP的依賴管理工具,通過composer.json文件管理項目依賴。 1)解析composer.json獲取依賴信息;2)解析依賴關係形成依賴樹;3)從Packagist下載並安裝依賴到vendor目錄;4)生成composer.lock文件鎖定依賴版本,確保團隊一致性和項目可維護性。

如何在MySQL中重命名數據庫 如何在MySQL中重命名數據庫 Apr 29, 2025 pm 04:00 PM

MySQL中重命名數據庫需要通過間接方法實現。步驟如下:1.創建新數據庫;2.使用mysqldump導出舊數據庫;3.將數據導入新數據庫;4.刪除舊數據庫。

See all articles