Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

उपयोगकर्ताओं को विभिन्न संगठनों, विश्वविद्यालयों, विभिन्न भूमिकाओं वाली कंपनियों से कैसे जोड़ा जाए?

-- User USR exists.
--
user {USR}
  PK {USR}
-- Role ROL exists.
--
role_ {ROL}
   PK {ROL}

Xorg एक विश्वविद्यालय, एक संगठन, या एक फाउंडेशन के लिए एक सामान्य शब्द है। भेदभाव करने वाला TYP इन तीनों के बीच अंतर करने के लिए प्रयोग किया जाता है।

-- Xorg XOG, of type TYP, named XNM was created
-- (is owned) by user USR.
--
xorg {XOG, TYP, USR, XNM, ...common_cols}
  PK {XOG}
  SK {XOG, TYP}

CHECK TYP in {'U', 'O', 'F'}

FK {USR} REFERENCES user {USR}
-- University (xorg) XOG, of xorg-type TYP = 'U', exists.
--
university {XOG, TYP, ...university_specific_cols}
        PK {XOG}

CHECK TYP = 'U'

FK {XOG, TYP} REFERENCES xorg {XOG, TYP}
-- Organization (xorg) XOG, of xorg-type TYP = 'O', exists.
--
organization {XOG, TYP, ...organization_specific_cols}
          PK {XOG}

CHECK TYP = 'O'

FK {XOG, TYP} REFERENCES xorg {XOG, TYP}
-- Foundation (xorg) XOG, of xorg-type TYP = 'F', exists.
--
organization {XOG, TYP, ...foundation_specific_cols}
          PK {XOG}

CHECK TYP = 'F'

FK {XOG, TYP} REFERENCES xorg {XOG, TYP}
-- User USR is member of xorg XOG, of xorg-type TYP,
-- in role ROL.
--
user_xorg {USR, XOG, TYP, ROL}
       PK {USR, XOG}

      FK1 {XOG, TYP} REFERENCES
     xorg {XOG, TYP}

      FK2 {USR} REFERENCES user  {USR}
      FK3 {ROL} REFERENCES role_ {ROL}

नोट:

All attributes (columns) NOT NULL

PK = Primary Key
AK = Alternate Key   (Unique)
SK = Proper Superkey (Unique)
FK = Foreign Key

उपप्रकारों . के बारे में एक शब्द . उपप्रकारों के लिए बाधाओं को लागू करने का उचित तरीका अभिकथनों का उपयोग करना होगा (CREATE ASSERTION ), लेकिन यह अभी भी प्रमुख डीबी में उपलब्ध नहीं है। मैं FKs . का उपयोग कर रहा हूं इसके बजाय, और अन्य सभी स्थानापन्न विधियों की तरह यह सही नहीं है। SO और SE-DBA पर लोग बहुत बहस करते हैं कि क्या बेहतर है। मैं आपको अन्य तरीकों की भी जांच करने के लिए प्रोत्साहित करता हूं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. तालिका में मान मौजूद होने पर भी MySQL क्वेरी झूठी लौट रही है? यह पता लगाने की कोशिश की जा रही है कि क्या तालिका में नहीं है?

  2. MYSQL तालिकाओं से नवीनतम पोस्ट का चयन करें

  3. MySQL CURRENT_TIMESTAMP डिफ़ॉल्ट के रूप में

  4. PDOStatement::execute() सत्य लौटाता है लेकिन डेटा अपडेट नहीं होता है

  5. ऑपरेशन '=' के लिए कॉलेशन (utf8mb4_unicode_ci,IMPLICIT) और (utf8mb4_general_ci,IMPLICIT) का अवैध मिश्रण