J'ai une base de données contenant deux tables; List et ListItem. Ces tables ont une relation un-à-plusieurs. Mais une exigence est de permettre le tri des ListItems liés à une liste donnée. En plus d'avoir un champ "ordre de tri" dans la table ListItem, quelle serait une bonne approche?Schéma de base de données: Gestion de l'ordre des articles
Répondre
Si vous êtes invité à fournir une méthode autre qu'un champ Trier ou Séquence, que pensez-vous d'un champ CreatedAt? Parfois, une table d'ordre de tri distincte (ListItemSortOrder) est utile.
Je vois trois alternatives:
champ de tri de commande dans la table d'élément de liste. Normalement, le meilleur choix: Simple et fait ce dont vous avez besoin. Si c'est ce que vous voulez, cela pourrait être automatiquement rempli avec un horodatage.
une table distincte contenant les informations de tri. Utile s'il y a un nombre arbitraire de commandes à maintenir
une colonne suivante/précédente: Ceci est un cauchemar dans la plupart des scénarios, mais pourrait en fait être utile, si vous avez d'énormes quantités d'éléments de liste et devez insérer dans le milieu beaucoup.
Si le sens spécifique au domaine de vos tables est vraiment aussi générique que « Liste » et « Liste Item », le mieux que vous pouvez faire est de fournir une colonne générique « Ordre de tri ». Toutefois, si vos tables ont une signification plus spécifique dans le domaine métier, vous souhaiterez que la colonne Ordre de tri ait plus de sens dans ce domaine. Un exemple serait des ordonnances et des tables LineItem, où la colonne de tri serait LineItemNumber:
CREATE TABLE [Orders](
[ID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY
)
GO
CREATE TABLE [LineItems](
[ID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[OrderID] [int] NOT NULL,
[LineItemNumber] [int] NOT NULL,
CONSTRAINT [UC_LineItems] UNIQUE NONCLUSTERED
(
[OrderID] ASC,
[LineItemNumber] ASC
)
)
GO
ALTER TABLE [LineItems] WITH CHECK ADD CONSTRAINT [FK_LineItems_Orders]
FOREIGN KEY([OrderID])
REFERENCES [Orders] ([ID])
GO
ALTER TABLE [LineItems] CHECK CONSTRAINT [FK_LineItems_Orders]
GO
Notez que j'ai ajouté la contrainte spécifique au domaine qu'un ordre donné ne peut pas avoir deux postes avec le même LineItemNumber. Cette contrainte n'est pas nécessaire dans tous les cas de List/ListItem.
- 1. Schéma du système de gestion des contacts
- 2. Schéma de base de données de DomainModel
- 3. Confusion de schéma de base de données
- 4. Meilleures pratiques de gestion des exceptions de base de données
- 5. Gestion des données de hiérarchie dans la base de données
- 6. Insérer des articles directement dans la base de données MediaWiki
- 7. Comment commenter un schéma de données de base?
- 8. 'System.Web.Security.SqlMembershipProvider' nécessite un schéma de base de données compatible avec la version de schéma '1'
- 9. Comment faire des tâches de gestion de données dans une base de données d'objets Db4o?
- 10. XSD neutre de base de données standard pour décrire un schéma de base de données relationnelle
- 11. Gestion des envois simultanés sur la base de données
- 12. Gestion des données de référence de base de données et de leur code associé
- 13. Comment tester un schéma de base de données django?
- 14. rails mise à jour schéma de base de données
- 15. Comment générer un schéma de schéma de base de données dans Visual Studio (express)?
- 16. Outils de gestion de base de données Sybase SQL Anywhere
- 17. Constructeur de base de données du schéma MySQL
- 18. Requête SQL pour un schéma de base de données
- 19. schéma de base de données suggéré pour le site photos
- 20. Schéma de base de données pour les grandes applications Web
- 21. Gestion des erreurs et intégrité des données lors du changement du schéma de table
- 22. Architecture d'une base de données de gestion d'actifs
- 23. Comment concevoir un schéma de base de données pour un système de gestion de contenu (cms) avec prise en charge multilingue?
- 24. Django Admin: Gestion de la base de données
- 25. convertir la table de base de données en fichier de schéma XML
- 26. conception de système de gestion de contenu basé sur la base de données
- 27. Gestion de la base de données à l'aide de la fenêtre des propriétés
- 28. Plans de sauvegarde et de gestion des sinistres pour la base de données mysql
- 29. Un schéma de base de données pour Tags (par exemple, chaque poste a des balises facultatives)
- 30. Données de test générées automatiquement à une base de données à partir d'un schéma?
Cela n'a rien à voir avec asp.net-mvc –