❶ 資料庫語句怎麼加外鍵
1、以具有 DBA 許可權的用戶身份連接到資料庫,執行 ALTER TABLE 語句,將表定義更新為包括外鍵定義。創建一個名為 Skills 的表,其中包含潛在技能列表,然後創建一個與 Skills 表具有外鍵關系、名為 EmployeeSkills 的表。
❷ 微服務 資料庫 怎麼設計外鍵關聯怎麼搞
為已經添加好的數據表添加外鍵:
語法:
alter table 表名 add constraint FK_ID foreign key(你的外鍵欄位名) REFERENCES 外表表名(對應的表的主鍵欄位名);
例:
alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id)
//FK_ID是外鍵的名稱
/*
CREATE TABLE `tb_active` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`content` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `user_id_2` (`user_id`),
CONSTRAINT `FK_ID` FOREIGN KEY (`user_id`) REFERENCES `tb_user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
*/
❸ sql資料庫設計規范及如何設置外鍵
20個資料庫設計最佳實踐: 使用明確、統一的標明和列名,例如 School, SchoolCourse, CourceID。 數據表名使用單數而不是復數,例如 StudentCourse,而不是StudentCourses。 數據表名不要使用空格。 數據表名不要使用不必要的前綴或者後綴,例如使用School,而不是TblSchool,或者SchoolTable等等。 資料庫中的密碼要加密,到應用中再解密。 使用整數作為ID欄位,也許現在沒有這個必要,但是將來需要,例如關聯表,索引等等。 使用整數欄位做索引,否則會帶來很大的性能問題 。 使用bit 作為布爾欄位,使用整數或者varcha是浪費。同時,這類欄位應該以「Is」開頭。 要經過認證才能訪問資料庫,不要給每一個用戶管理員許可權。 盡量避免使用「select *」,而使用「select [required_column_list]」以獲得更好的性能。 假如程序代碼比較復雜,使用ORM框架,例如hibernate,iBatis。ORM框架的性能問題可以通過詳細的配置去解決。 分割不常使用的數據表到不同的物理存儲以獲得更好的性能。 對於關鍵資料庫,使用安全備份系統,例如集群,同步等等。 使用外鍵,非空等限制來保證數據的完整性,不要把所有的東西都扔給程序。 缺乏資料庫文檔是致命的。你應該為你的資料庫設計寫文檔,包括觸發器、存儲過程和其他腳本。 對於經常使用的查詢和大型數據表,要使用索引。數據分析工具可以幫助你決定如何建立索引。 資料庫伺服器和網頁伺服器應該放在不同的機器上。這回提高安全性,並減輕CPU壓力。 Image和blob欄位不應該定義在常用的數據表中,否則會影響性能。 範式(Normalization)要按照要求使用以提高性能。Normalization做的不夠會導致數據冗餘,而過度Normalization 會導致太多的join和數據表,這兩種情況都會影響性能。 多花點時間在資料庫設計上,否則你將來會付出加倍的時間來償還。設置外鍵:方法一:SQL語句alter table 表名 add constraint 外鍵名 foreign key(欄位名) references 主表名(欄位名) on delete cascade方法二:不想寫sql 語句也可以直接用圖形化操作 選擇你要創建外鍵的表,反鍵選擇修改表,點擊
❹ 關於django資料庫設計,雙表互為外鍵
資料庫設計是整個設計最基礎的部分
1、django app的設計:根據系統的需求分析來設計django的app,django的開發是基於app來開發的,所以第一步就是設計app。
2、各appmodel的設計:也就是設計對應的數據表
3、數據表的生成以及修改
使用在線教育系統作為實例:
userprofile的設計:在任何一個系統中,user表都是第一個被設計的,django會產生幾個默認用戶數據表
在設計我們自己的user表的時候,我們希望能生成自己的表又希望能夠繼承django的默認表,此時,我們可以繼承AbstractUser(
from django.contrib.auth.models import AbstractUser
)
class UserProfile(AbstractUser):
pass
定義完UserProfile表之後,我們需要在setting.py文件中注冊users app,INSTALLED_APPS = [
'users',
]
並且定義一個方法AUTH_USER_MODEL = "users.UserProfile",注意這里是使用users.UserProfile而不是users.model.UserProfile
(1)user model的設計:
我們在設計django app的時候,每個app中都有model,model文件中很有可能用到其他app文件當中的model,這就會很容易引入循環引用的問題,為了解決這個問題,很常用的一種方法就是使用分層model的方法,也就是上一層可以引用下一層
的model,如下:
註:PEP8的在引入的規范是第一個區域是導入Python自帶的包,然後隔一行的第二個區域是第三方的包,如django,然後隔一行的第三個區域是我們自己定義的一些model
(2)coursemodel的編寫:一個數據可能和另一個數據是一對多的關系,但是一張表存儲不了這種關系,所以就需要把這兩個數據分別存儲在不同的數據表當中,這樣就會引入外鍵的關系。
model的FileFIield,定義了這個欄位就可以在後台系統中生成上傳文件的按鈕
(3)oganizationmodel的編寫:
(4)operation的model編寫:
所有的APP編寫完成之後,我們可以建立Python的apps包,把所有的app都放到這個apps中,把所有的APP放到apps之後,會發現各個app的model的引用可能會出現紅線,說明我們找不到這些引用的包,所以需要我們在setting.py文件當中
把apps加入Python的搜索目錄之下,
import syssys.path.insert(0, os.path.join(BASE_DIR, 'apps'))