Ho bisogno di costruire un'interfaccia utente per inserire valori nel database. Sono bloccato con il mio design di classe per realizzarlo.
Ho bisogno di un'interfaccia utente in cui sia possibile inserire il nome del sistema. Ogni sistema può avere molte opzioni. Ogni opzione è associata a un TC (Chara tecnico). Ogni TC ha un altro insieme di valori che è descritto come TCset. Ad esempio, supponiamo che Tcset per un TC (TC1) abbia valori: TC1.1, TC1.2, TC1.3. (Ci sono altre variabili che descrivono ogni riga nel TCset, ho menzionato la proprietà name da sola per semplicità.Ora di nuovo tornando al sistema, l'opzione definita in ogni sistema può avere più valori di opzione.Per ogni valore di opzione dovrei essere in grado di inserisci un valore per la proprietà name in TCset associato al TC di tale opzione.)
Quello che vorrei ottenere sarebbe qualcosa di simile a questo.
Aggiunta di un sistema e definizione delle opzioni:
Aggiunta di valore per Opzione e valore per SetVal:
Sulla base della mia comprensione, ho progettato il seguente diagramma di classe. Ma ancora non riesco a trovare la mappatura esatta tra l'opzione e SetVal. Non riesco a progettare una classe in cui potrei aggiungere valori per Tcset in una particolare opzione
public class Lsystem
{
public int LsystemID { get; set; }
public string LsystemName { get; set; }
public virtual ICollection<Option> Options { get; set; }
public int OptionId { get; set; }
}
public class Option
{
public int OptionID { get; set; }
public string OptionName { get; set; }
public int TCID { get; set; }
public virtual TC tc { get; set; }
public virtual Lsystem Lsystem { get; set; }
public int LsystemID { get; set; }
public virtual ICollection<OptionValue> OptionValues { get; set; }
}
public class OptionValue
{
public int OptionValueID { get; set; }
public string ValName { get; set; }
//public int TCsetID { get; set; }
public int OptionID { get; set; }
public int SetValID { get; set; }
public virtual Option Option { get; set; }
//public virtual TCset TCset { get; set; }
public virtual SetVal SetVal { get; set; }
}
public class TC
{
public int TCID { get; set; }
public string TCName { get; set; }
public virtual ICollection<TCset> TCsets { get; set; }
}
public class SetVal
{
public int SetValId { get; set; }
public double Value { get; set; }
public int OptionID { get; set; }
public int TCsetID { get; set; }
public virtual OptionValue OptionValue { get; set; }
public virtual TCset TCset { get; set; }
}
public class TCset
{
public int TCsetID { get; set; }
public string TCsetName { get; set; }
public string PhysicalUnit { get; set; }
public int TCID { get; set;}
public virtual TC TC { get; set; }
}
C'è qualcosa che mi manca per farlo bene. Ma il modello di classe corrente non funziona perché i conflitti di chiavi esterne. Questo mi ha fatto aggiungere un'altra classe SetVal ma non ha risolto il mio problema. Ho provato molto per ottenere tutte le relazioni giuste ma non ha funzionato.
Solo per un briefing, le relazioni che ho usato qui:
System - Option : One to Many
Option - OptionValue : One to Many
Option - TC : Many to One
TC - TCset : One to many
OptionValue - SetVal : One to One
TCset - Setval : One to One
Il punto in cui sono bloccato sta generando una tabella che accetta l'id del valore dell'opzione e offre un'opzione per aggiungere valori per il tcset.
In base al valore dell'opzione Ab1, ho bisogno di una tabella per dare valori come il seguente
Valore opzione Ab1
ABC1 - 45 ABC2 - 34
Opzione Valore Pq1
PQR1 - 67 Pqr2 - 34 pqr3 - 56
Valore opzione Pq2
PQR1 - 67 pqr2 - 34 pqr3 - 67
Questa connessione è ciò che mi manca. me ne sono reso conto quando stavo cercando di creare tabelle come è stato fatto nella risposta
Modifica: 2 Aggiunta di un esempio
+--------------------------+
| SystemId | System Name |
+------------+-------------+
| 1 | DCC - 050 |
|____________|_____________|
| 2 | DCC - 070 |
|____________|_____________|
____________________________
| TCID | TCName |
|____________|_____________|
| 1 | Screw |
|____________|_____________|
| 2 | Motor |
|____________|_____________|
__________________________________________________________
| TCSetID | TCsetname|PhysicalUnit | DataUsage | TCID |
|___________|__________|_____________|___________|________|
| 1 | speed | m/sec | Prelimina | 1 |
|___________|__________|_____________|___________|________|
| 2 | d_0 | mm | final | 1 |
|___________|__________|_____________|___________|________|
| 3 | d_1 | m | final | 1 |
|___________|__________|_____________|___________|________|
| 4 | torque | mm | final | 2 |
|___________|__________|_____________|___________|________|
____________________________________
|OptionID | SystemID | TCID |OpName |
|_________|__________|______|_______|
| 1 | 1 | 1 |Screw |
|_________|__________|______|_______|
| 2 | 1 | 2 |Motor |
|_________|__________|______|_______|
_______________________________________________
|OptionvalID | SystemID|OptionID | OptionValue|
|____________|_________|_________|____________|
| 1 | 1 | 1 | 01 |
|____________|_________|_________|____________|
| 2 | 1 | 1 | 02 |
|____________|_________|_________|____________|
| 3 | 1 | 1 | 03 |
|____________|_________|_________|____________|
| 4 | 1 | 2 | 01 |
|____________|_________|_________|____________|
| 5 | 1 | 2 | 02 |
|____________|_________|_________|____________|
Ora il problema principale è che voglio dare valori per TCsetname in ogni opzione. La mia tabella risultante sarebbe la seguente (Questo non è lo schema del database)
VITE
__________________________________________
|TCSet | 01 | 02 | 03 | => Option values for Screw
|______|__________|__________|___________|
|speed | 12 | 14 | 16 |
|______|__________|__________|___________|
|d_0 | 34 | 56 | 56 |
|______|__________|__________|___________|
|d_1 | 2 | 5 | 6 |
|______|__________|__________|___________|
MOTOR
______________________________
|TCSet | 01 | 02 | => Option Values for the Option Motor
|______|__________|__________|
|Torqu | 12 | 14 |
|______|__________|__________|
Sto cercando di correggere il datamodel che accetta l'ultima tabella