Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Problema FK con DBDesigner 4

    Ciao a tutti, sto cercando di usare DBDesigner 4 per fare un DB Mysql
    C'è una cosa che però non capisco con le relazioni.

    Vi faccio un Esempio:
    Abbiamo 3 Tabelle: Utenti - Iscritti - Categorie
    con le seguenti relazioni:

    Utenti [1] - Iscritti [M]
    Utenti [1] - Categorie [M]
    Categorie [M] - Iscritti [M]

    Visto che:
    Gli iscritti possono appartenere a + categorie
    e
    Le categorie possono avere + iscritti
    Creo una quarta tabella che chiameremo Iscritti_Categorie per arrivare ad avere:

    Utenti [1] - Iscritti [M]
    Utenti [1] - Categorie [M]
    Iscritti [1] - Iscritti_Categorie [M]
    Categorie [1] - Iscritti_Categorie [M]

    Bene...

    secondo le relazioni mi dovrei ritrovare con queste chiavi esterne (FK):

    TB Iscritti
    Id (PK)
    Utenti_id (FK)

    TB Categorie
    Id (PK)
    Utenti_id (FK)

    TB Iscritti_Categorie
    Id (PK)
    Categorie_id (FK)
    Iscritti_id (FK)
    -----------------------------

    ecco io se lo facessi su carta, farei così... MA con DBDesigner quando vado a creare le relazioni:

    Iscritti [1] - Iscritti_Categorie [M]
    Categorie [1] - Iscritti_Categorie [M]

    nella TB Iscritti_Categorie mi mette:
    Id (PK)
    Categorie_id (FK)
    Iscritti_id (FK)
    +
    Categorie_Utenti_id (FK)
    Iscritti_Utenti_id (FK)

    praticamente inserisce oltre alle PK delle tabelle interessate anche le loro FK, ma non capisco perchè lo faccia, se è giusto e se posso evitare che lo faccia, visto che secondo me avere 4 chiavi esterne in quella tabella non serve a niente.

    Sapete spiegarmi come mai succede e se sbaglio a pensare che non servano... grazie a tutti

    ps spero di essere stato abbastanza chiaro.

  2. #2
    Scusate ma su DBDesigner mi definisce la relazione 1 a M classica... e poi questa...

    Kind
    1:n (Non Identifying)

    Caption
    one - to - many relation, FK not in PK

    Explanation
    One row in the source table matches many rows in the destination table but the Foreign Key in the destination table is not in the Primary Key Index.

    Example
    A relation between a [payment] table and an [order] table. Each row in the [order] table as a [payment] assigned to. Only [idorder] is the Primary Key field in the [order] table.


    Il mio inglese non è eccezionale, voi come la capite la cosa?

    NB utilizzando questo tipo di relazione, il problema con le chiavi esterne in più si risolve.

  3. #3
    ciao a tutti.
    avevo il tuo stesso problema, ma credo di averlo risolto.

    ho notato cmq che se tu vai sull'editor della relazione (edit object) puoi rinominare i campi di sorgente e destinazione della relazione. questo dovrebbe permetterti di accorpare i nomi della tabella di mapping (quella dove vengono generate le FK).

    io cmq ho cancellato tutte le relazioni dalle mie tabelle ed ho lasciato che il campo di relazione me lo creasse dbdesigner; poi agendo come ti dicevo sull'oggetto relazione ho rinominato il campo di destinazione come volevo.

    non so se il problema che segnalavi riguarda il tuo db in particolare, db che non ho avuto modo di analizzare. in questo caso non considerare questa risposta.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.