Is it wise to separate relationship attributes with frequently repeated string values?

Consider the relation SPACESHIP_FLAT:

╔═════╀════════════════╀════════════════╀═══════════╗
β•‘ ID  β”‚ NAME           β”‚ TYPE           β”‚ LV        β•‘
β•Ÿβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β•’
β•‘ 1   β”‚ Soyuz TMA-14   β”‚ Soyuz          β”‚ Soyuz-FG  β•‘
β•‘ 2   β”‚ Endeavour      β”‚ Space Shuttle  β”‚ Shuttle   β•‘
β•‘ 3   β”‚ Soyuz TMA-15M  β”‚ Soyuz          β”‚ Soyuz-FG  β•‘
β•‘ 4   β”‚ Atlantis       β”‚ Space Shuttle  β”‚ Shuttle   β•‘
β•‘ 5   β”‚ Soyuz TM-31    β”‚ Soyuz          β”‚ Soyuz-U   β•‘
β•‘ 6   β”‚ EFT-1          β”‚ Orion          β”‚ Delta-IV  β•‘
β•‘ 7   β”‚ XXX            β”‚ CST-100        β”‚ Delta-IV  β•‘
β•‘ 8   β”‚ YYY            β”‚ CST-100        β”‚ Falcon-9  β•‘
β•‘ 9   β”‚ ZZZ            β”‚ Dragon V2      β”‚ Falcon-9  β•‘
β•‘ ... β”‚ ...            β”‚ ...            β”‚ ...       β•‘
β•šβ•β•β•β•β•β•§β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•§β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•§β•β•β•β•β•β•β•β•β•β•β•β•

Here the attributes TYPEand LVhave duplicate string values. So my question is: is it wise to project these attributes onto new relationships? The result will be as shown below.

SPACESHIP

╔═════╀════════════════╀═══════╀══════╗
β•‘ ID  β”‚ NAME           β”‚ TYPE  β”‚ LV   β•‘
β•Ÿβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β•’
β•‘ 1   β”‚ Soyuz TMA-14   β”‚ 1     β”‚ 1    β•‘
β•‘ 2   β”‚ Endeavour      β”‚ 2     β”‚ 2    β•‘
β•‘ 3   β”‚ Soyuz TMA-15M  β”‚ 1     β”‚ 1    β•‘
β•‘ 4   β”‚ Atlantis       β”‚ 2     β”‚ 2    β•‘
β•‘ 5   β”‚ Soyuz TM-31    β”‚ 1     β”‚ 3    β•‘
β•‘ 6   β”‚ EFT-1          β”‚ 3     β”‚ 4    β•‘
β•‘ 7   β”‚ XXX            β”‚ 4     β”‚ 4    β•‘
β•‘ 8   β”‚ YYY            β”‚ 4     β”‚ 5    β•‘
β•‘ 9   β”‚ ZZZ            β”‚ 5     β”‚ 5    β•‘
β•‘ ... β”‚ ...            β”‚ ...   β”‚ ...  β•‘
β•šβ•β•β•β•β•β•§β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•§β•β•β•β•β•β•β•β•§β•β•β•β•β•β•β•

SSTYPES

╔═════╀════════════════╗
β•‘ ID  β”‚ TYPE           β•‘
β•Ÿβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β•’
β•‘ 1   β”‚ Soyuz          β•‘
β•‘ 2   β”‚ Space Shuttle  β•‘
β•‘ 3   β”‚ Orion          β•‘
β•‘ 4   β”‚ CST-100        β•‘
β•‘ 5   β”‚ Dragon V2      β•‘
β•‘ ... β”‚ ...            β•‘
β•šβ•β•β•β•β•β•§β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

LVEHICLES

╔═════╀═══════════╗
β•‘ ID  β”‚ LV        β•‘
β•Ÿβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β•’
β•‘ 1   β”‚ Soyuz-FG  β•‘
β•‘ 2   β”‚ Shuttle   β•‘
β•‘ 3   β”‚ Soyuz-U   β•‘
β•‘ 4   β”‚ Delta-IV  β•‘
β•‘ 5   β”‚ Falcon-9  β•‘
β•‘ ... β”‚ ...       β•‘
β•šβ•β•β•β•β•β•§β•β•β•β•β•β•β•β•β•β•β•β•

I normalized my relational model before 5NFand found no reason to separate TYPEand LVfrom the relationship (it does not cause update anomalies). But in the case of a huge number of tuples in the ratio, SPACESHIP_FLATit will consume a lot of resources (as I believe), so their separation will be a little more efficient. But I did not find it in database design theory.

Update

Ok, let's clarify some points.

TYPE NAME. NAME TYPE - . " -14" "" . , TYPE. NAME TYPE -- ( ).
LV NAME .
"" TYPE " -" " " TYPE, " -" " " .., "" , . "" ( ).
- , , (--, SPACESHIP_FLAT SPACESHIP - ).

+4
3

, , , - . - .

SPACESHIP. SPACESHIP_FLAT.

5NF

, . 1NF.

  • 1NF 2NF, , , , , "" 1NF 2NF.

  • , , , , , 1NF 2NF, , 1NF 2NF.

  • , Codd 3NF . BCNF, 4NF, 5NF NF, , , 3NF .

, .

  • , , , , , . , nonse "".

  • , ( ), .

  • .. .

TYPE LV

, . , , .

  • , post-Codd , "" , "SQL ..." "Relational ...". .

  • 1NF.

  • .

.

, . , , , ( ).

. , ( , , ) .

- , , , , ( ) , .

  • UPDATE TYPE ID 5 SPACESHIP_FLAT, Soyuz Proto-Soyuz, 1 3 , . .

  • , UPDATE TYPE ID 1 SSTYPES, Soyuz Proto-Soyuz, , SSTYPES. . .

  • . , . , .

  • NB. . .

SPACESHIP ( ),

, , . , , .. .. ..,

.

, , - . , , . .

, . , , .

, , .

, .

  • .

    • , , , False , .
  • ( , ), :

    • ( - , ),

.

, . Dr E F Codd. , , , ( ).

.

. . , , ( ), .

, , . ( ). , , , . , . , , , .

NAME. NAME TYPE - . " -14" "" . , TYPE.

( Relational terms, OO/ORM. , .)

NAME TYPE ( ).

. : , NAME TYPE, ( ).

.

  • Lookup, , , , () , , , , .

  • ( Lookup), subject , Dependency is Identify. PK PK. .

SPACESHIP TYPE, SPACESHIP (a) TYPE (b) TYPE PK SPACESHIP PK.

, SPACESHIP TYPE LAUNCH_VEHICLE, TYPE LAUNCH_VEHICLE SPACESHIP.

LV NAME .

. . NAME LAUNCH_VEHICLE (LV), .

"" " -" " ", " -" " " .., "" , . *

.

, 1NF. "" , . ( ). (a) (b) LAUNCH_VEHICLE (c) , . TMA vs TM-XX TYPE, .

, (c). ; , ; .. .

- Discovery, Endeavour, Volna, Yenesei, Lena .. , NAME, (TYPE, LAUNCH_VEHICLE XXXX).

Soyuz ( ).

. , . . , (, , ).

- , , (--, SPACESHIP_FLAT SPACESHIP - ).

  • , " ". . , . , " " , , , , .

  • , . .

  • . . , , (, ) . , Relational Power, , , (, ).

    (Date, Darwen, Fagin, Abitebul, et al) . , () () .

--; ; --, , .

, , - C. J. Date. - , ( ).

. , . , .

, , , , , .., , , - . , , , , , , , .

, SO ( ). , - , , , , , "" " ". .

, , . . . .

, , , - E F Codd. , , . , , .

. J. Date , 5NF ( SPACESHIP_FLAT).

-- . . . Codd 1NF, 2NF, 3F. . (, , ).

"", "" . "" 3NF, . "" " " , " " ( ). , BCNF, 4NF, 5NF. , , , .

, NF, , , , . Date Darwen 1NF, , . .

( , ), 5NF .

, 3NF, 5NF, , . , , , 5NF , 5NF, . 3NF , "" 5NF, , .

?

() (.. , , , ) () (.. " " )

.

, "" BCNF, 4NF, 5NF, NF, " " . .

, 36 , BCNF, 4NF 5NF, 3NF ( 3NF ).

  • , " ", Codd 3NF, , "", , "" . , "" " " .

, , Codd 3NF, , .

2007 , 95% DKNF, Codd . 5% - SQL. 2007 , , 100% DKNF.

  • "" , . " ". Codd.

DKNF " " , , .

  • () " " , () " ".

  • .

  • , , . .

, , - . , : , , : ( ); ( , JOIN power); . RFS--; RFS-; RFS.

:

  • , , . , , .

    • NF. NF, .

    • , NF, Codd RM, , , , "" (a) (b) , , , .

  • , , .

    • " " , () , , () , " " , , (c) " " , .

    • (, ), . . , , .

    • , " " - . , , . ( , ), "" -, - , . , , .

: ?

. . , ; ; , , . , RFS.

  • . , . , .

  • , - Post-Codd Record ID, , RM. RFS, , .

  • , ID , , , ID , "". -.

- , JOINs?

? ? , , , . .

  • IDEF1X. IDEF1X - , 1987 ( 1993 ). , , ., , "". , .

  • , , ; ; ; ; ; ; - . IDEF1X. , .

  • , PF. , (a) FK (b) , RoleNames.

  • , . ( ). , . , Unix Inode ( , ), .

, "-", . ( , ) . "" - CHAR (X), , :

    SELECT  [Species]  = T.Name,
            [Activity] = A.Name
        FROM Species S
            JOIN Taxonomy T 
                ON S.SpeciesNo = T.TaxonomyNo
            JOIN SpeciesActivity SA
                ON S.SpeciesNo = SA.SpeciesNo
            JOIN Activity A
                ON SA.Activity = A.Activity

"--" , PRIMARY, VARCHAR?

. , , . , Relational, Key. ().

SpeciesActivity - .

  • ID , (SpeciesNo, Activity) , ; , .

  • .

  • PK, , .

, , . VARCHAR . VARCHAR - .

  • , , .

  • VARCHAR Keys , , , / .

  • , , , , . , . VARCHAR, , .

2

, , MySQL Workbench, , ?

, , freeware, myNONsql ( , ), , , .

. , . , , . , , . , , .

, ( SPACESHIP_FLAT), TYPE LV, SSTYPES LVEHICLES, FK.

.

, ; ID; SPACESHIP.TYPE LV . (a) () .

, . , , TYPE LV, FKs , , . , , CHAR (1) CHAR (2), .

  • , ENUM ID.

  • , , ( ) SPACESHIP ( JOIN Lookup).

    SSTYPE
    SS_Code Name
    ------- -------------
    Sz      Soyuz         
    SS      Space Shuttle 
    Or      Orion         
    C1      CST-100      
    D2      Dragon V2
    

SPACESHIP SS_Code LV_Code FK.

- [ual model] [al model].

, . , , : ) () ( "" , ).

  • , . ​​ . ( - ).

  • , ( ). , vs , . ERwin , CASE ; ; ; , -.

  • , , . .

@PerformanceDBA , , , .

.

, : ?

. FK, (a) (b) , .

. "". . . , , . RM , -. , ( ) ..

  • - "", , . , "", ( , , ) . . .

  • "-", . .

  • , "" - , , ( ), "", ( ). , , () () () ( ) " ". , , , , "".

:

?

  • - .

    , . ( , .)

  • , , .

    , () .

+4

, . , , . , Blabla Michael Jordan. - , .

, -, :

NULLs, , NULLs BL, NULL .

.

+1

SPACESHIP_FLAT ( ), .

. " - ". , DMBS ; () . , , .

, , , , , . ( .)

.

This is not part of normalization. Normalization does not introduce new columns. But this is not all that is needed for a good design.

0
source

All Articles