J'ai le schéma suivant implémenté avec succès dans mon application. L'application connecte les canaux d'unité de bureau aux canaux d'unité d'E/S. Les tables DeskUnits et IOUnits sont essentiellement une liste d'unités de bureau/E/S et le nombre de canaux sur chacune. Par exemple, un bureau pourrait être 4 ou 12 canaux.Implémentation d'une relation 1 à plusieurs avec SQLite
CREATE TABLE DeskUnits (Name TEXT, NumChannels NUMERIC);
CREATE TABLE IOUnits (Name TEXT, NumChannels NUMERIC);
CREATE TABLE RoutingTable (DeskUnitName TEXT, DeskUnitChannel NUMERIC, IOUnitName TEXT, IOUnitChannel NUMERIC);
'table' Le RoutingTable relie ensuite chaque canal de DeskUnit à un canal Iounit. Par exemple, le DeskUnit appelé "Desk1" canal 1 peut acheminer vers le nom IOunit "IOUnit1" canal 2, etc.
Jusqu'ici j'espère que c'est assez simple et compréhensible. Le problème est, cependant, c'est une relation strictement 1 à 1. Tout canal DeskUnit peut acheminer vers un seul canal IOUnit.
Maintenant, j'ai besoin d'implémenter une relation de 1 à plusieurs. Où n'importe quel canal DeskUnit peut se connecter à plusieurs canaux IOUnit. Je me rends compte que je pourrais avoir à réorganiser les tables complètement, mais je ne suis pas sûr de la meilleure façon d'y parvenir. Je suis assez nouveau pour SQLite et les bases de données en général, donc toute aide serait appréciée.
Merci
Patrick
Merci beaucoup pour la réponse, ça aide vraiment. Mais comment est-ce que j'écrirais une instruction sql pour montrer tous les IOUnits sur un canal de DeskUnit particulier? – Patrick
@Patrick: Pour DeskUnitChannel 3, essayez 'select * de IOUnit iu joint interne IOUnitChannel iuc sur iu.IoUnitId = iuc.IoUnitId où iuc.DeskUnitChannelId = 3' – Andomar