Django如何建立聯合主鍵

2021-09-29 16:35:50 字數 1627 閱讀 7680

1、資料庫中的每張表只能有乙個主鍵,不可能有多個主鍵

2、所謂乙個表多個主鍵,我們稱之為聯合主鍵

3、主鍵的作用是保證資料的唯一性和完整性,同時通過主鍵檢索表增加檢索速度

class iottemp(models.model):

seq_no = models.integerfield(blank=false, null=false)

order_id = models.charfield(max_length=32, blank=true, null=true, verbose_name=u'訂單id')

mac = models.charfield(max_length=64, blank=false)

temperature = models.floatfield(default=0.0)

time = models.datetimefield(auto_now=false)

user = models.charfield(max_length=text_len, blank=true, verbose_name=u'所屬人')

#seq_no,order_id,mac作為聯合主鍵保證資料不重複

class meta:

unique_together = (("seq_no", "order_id", "mac"),)

verbose_name_plural = u"通用溫度表"

class user(model):

id=autofield(primary_key=true)

name = charfield(max_length=30)

age =integerfield()

class role(model):

id=autofield(primary_key=true)

name=charfield(max_length=10)

#這是兩個model有乙個roleuser的model來描述use與role的關係,需要user的id與

role的id做外來鍵,也做聯合主鍵,如下:

class roleuser(model):

userid=foreignkey(user)

roleid=foreignkey(role)

class meta:

unique_together=("userid","roleid")

related_name的值不一樣,否則會報錯

class attention(models.model):

"""使用者關注模組

"""follower = models.foreignkey(user, on_delete=models.cascade, related_name='follower', verbose_name='關注使用者')

followed = models.foreignkey(user, on_delete=models.cascade, related_name='followed', verbose_name='被關主使用者')

has_follow = models.booleanfield(default=true, verbose_name='判斷是否已經關注')

Django使用聯合主鍵

今天閒著沒事,突然想起乙個以前遇到的乙個小問題。一直忘了來驗證自己的解決方案,所以今天特意來查詢了些資料來驗證下自己的想法。整理如下 單張表內建立聯合主鍵 class iottemp models.model mac models.charfield max length 64,blank fals...

SpringBoot JPA 建立聯合主鍵

需要新建乙個類,放著建立聯合主鍵的主鍵,需要實現serializable介面,及無引數建構函式 data noargsconstructor allargsconstructor public class cokey implements serializable通過 idclass註解利用新建的外...

oracle 主鍵刪除,聯合主鍵的建立

alter table tablename drop primary key 執行上面的sql能夠刪除主鍵 假設不成功能夠用 alter table tablename drop constraints column cascade 刪除約束 alter table tablename disabl...