Table SQL avec une seule ligne?
Quel est le point (le cas échéant) en ayant une table dans une base de données avec une seule ligne?
Note: je ne parle pas de la possibilité de n'avoir qu'une ligne dans une table, mais quand un développeur délibérément fait un tableau qui est destiné à toujours avoir qu'une seule ligne.
Edit:
La taxe de vente exemple en est une bonne.
J'ai juste observé dans certains code je suis révision de trois tables différentes qui contiennent trois types de certificats (à la SSL), chacune ayant qu'une seule ligne. Je ne comprends pas pourquoi ce n'est pas fait en un grand tableau; je suppose que je suis en manque de quelque chose.
Si vous le pouvez, pourquoi ne pas demander au développeur pour une explication en personne?
Aussi, n'est-ce pas conduire à une programmation de l'odeur"? Puisqu'il n'existe pas de mécanismes de base de données que vous pouvez utiliser pour spécifier une table avec une seule ligne, serait-il possible d'placez accidentellement deux éléments dans le tableau et l'utilisation des données incorrectes lorsque vous interrogez plus tard?
Vous pouvez l'abus de mécanismes dans la plupart des RDBMes appliquer une 1 ligne de limite, comme definining une clé primaire (ou clé unique) de la colonne, et puis aussi l'ajout d'une contrainte de vérification sur la même colonne que ne permet qu'une seule valeur. Ce n'est pas agréable, mais
Aussi, n'est-ce pas conduire à une programmation de l'odeur"? Puisqu'il n'existe pas de mécanismes de base de données que vous pouvez utiliser pour spécifier une table avec une seule ligne, serait-il possible d'placez accidentellement deux éléments dans le tableau et l'utilisation des données incorrectes lorsque vous interrogez plus tard?
Vous pouvez l'abus de mécanismes dans la plupart des RDBMes appliquer une 1 ligne de limite, comme definining une clé primaire (ou clé unique) de la colonne, et puis aussi l'ajout d'une contrainte de vérification sur la même colonne que ne permet qu'une seule valeur. Ce n'est pas agréable, mais
OriginalL'auteur Jeremy Powell | 2009-07-30
Vous devez vous connecter pour publier un commentaire.
J'ai vu quelque chose de ce genre quand un développeur a demandé de créer une table de configuration pour stocker des paires nom-valeur de données qui doit persister sans être changés souvent. Il finit par la création d'une ligne de tableau avec une colonne pour chaque variable de configuration. Je ne dirais pas que c'est une bonne idée, mais je peux certainement voir pourquoi le développeur n'a donné ses instructions. Inutile de dire qu'il n'a pas passé l'examen.
Cela ne ressemble pas à une bonne conception, sauf si il ya quelques détails importants que vous ne connaissez pas. Si il y a trois éléments d'information qui ont les mêmes contraintes, les mêmes utilisation et la même structure, ils doivent être stockés dans le même tableau, 99% du temps. C'est une grande partie de ce que les tables sont pour fondamentalement.
Pas de coup de pouce que le droit de l'index cluster de ne pas fournir.
Welbog compte tenu de la contrainte pour votre cas que vous évoquez, ce qui serait la bonne option de conception?
OriginalL'auteur
Pour certaines choses que vous avez seulement besoin d'une ligne généralement des données de configuration système. Par exemple, "les ventes actuelles taux d'imposition". Cela pourrait changer dans l'avenir et donc ne devrait pas être codé en dur, mais vous aurez généralement toujours besoin à un moment donné. Ce type de données doit être dans la base de données de sorte que les requêtes peuvent l'utiliser dans les calculs.
Je ne suis pas un grand fan de cette, par exemple, ici au Canada, notre taxe de vente nationale a changé deux fois dans les 5 dernières années, et la province sont en train d'être modifié. Ainsi, un tableau de la taxe de vente avec une taxe/taux/efficace/date d'expiration qui fonctionne le mieux.
Pour de simples données de configuration système, je le considère comme une paire clé-valeur table avec une ligne pour chaque élément de configuration.
Et si il n'y avait qu'un élément de configuration, il n'y aurait qu'une seule ligne dans la table 🙂
Cependant, même un simple ensemble de données de configuration peut facilement contenir des valeurs de types différents. Des entiers, des chaînes et des booléens par exemple. Bien sûr, nous ne pouvons pas faire une nouvelle clé-valeur table pour chaque type de valeur, alors nous sommes de retour à la ligne unique de la table.
OriginalL'auteur
Ce n'est pas forcément une mauvaise idée.
Que si vous en aviez l'état global (par exemple, une valeur de type boolean) que vous avez voulu stocker quelque part? Et si vous voulez que vos procédures stockées pour accéder facilement à cet état?
Vous pouvez créer une table avec une clé primaire dont la valeur portée a été limitée à une seule valeur.
OriginalL'auteur
Seule ligne, c'est comme une classe singleton. objectif: contrôler ou de gérer certains autres processus.
Seule ligne de la table pourrait agir comme une section critique ou automate déterministe (sorte de répartiteur basé sur les valeurs de ligne)
Ligne est d'utiliser le plein dans une table COMPANY_DESCRIPTION, pour obtenir des données cohérentes à propos de cette société. L'utilisation complète de l'entreprise de lettres et d'adressage.
Seule ligne est l'utilisation complète de contenir une valeur réelle, comme la TVA ou la Date ou de l'Heure, et ainsi de suite.
OriginalL'auteur
Il peut être utile parfois pour émuler certaines caractéristiques du système de Base de données ne fournit pas. Je pense à des séquences dans MySQL par exemple.
OriginalL'auteur
Une table avec une seule ligne peut être utilisé pour stocker niveau de l'application des paramètres qui sont partagées par tous les utilisateurs de base de données. 'Maximum Autorisé des Utilisateurs par exemple.
OriginalL'auteur
Drôle... je me suis posé la même question. Si vous voulez juste pour stocker des valeurs simples et votre SEULE méthode de stockage est un serveur SQL server, c'est à peu près ce que vous avez à faire. Si je dois le faire, j'ai l'habitude de créer un tableau avec plusieurs colonnes et une ligne. J'ai vu un couple de produits commerciaux en faire de même.
OriginalL'auteur
Nous avons utilisé une seule ligne de la table dans le passé (pas souvent). Dans notre cas, ce tableau a été utilisé pour stocker à l'échelle du système de valeurs de configuration qui ont été mis à jour via une interface web. Nous aurions pu continuer la route d'un simple nom/valeur de la table, mais le client final préféré une seule ligne. Personnellement, j'aurais préféré le dernier, mais c'est vraiment jusqu'à la préférence, surtout si cette table n'aura jamais aucune sorte de relation avec une autre table.
OriginalL'auteur
Une base de données relationnelle stocke des choses que les relations: un des tuples de données satisfaisant une relation.
Comme, celui-ci: "un
VAT
de ce nombre pour cent est en vigueur dans mon pays aujourd'hui".Si un seul tuple satisifies cette relation, alors oui, il sera le seul à être dans le tableau.
SQL
ne peut pas stocker des variables: il peut stocker un ensemble composé d'1
élément, c'est une seule ligne de la table.Aussi,
SQL
est un jeu basé sur la langue, et pour certaines opérations, vous avez besoin d'un faux jeu d'une seule ligne, comme, pour sélectionner une expression constante.Vous ne pouvez pas simplement
SELECT
de rien dansOracle
, vous avez besoin d'unFROM
clause.Oracle
a un pseudotable,dual
, qui ne contient qu'une seule ligne et une seule colonne.Une fois, il ya longtemps, il l'habitude d'avoir deux lignes (d'où le nom de
dual
), mais a perdu son deuxième rangée quelque part sur son chemin vers la version7
.MySQL
a ce pseudotable trop, maisMySQL
est capable de faire, sélectionne sansFROM
clause. Pourtant, il est utile lorsque vous avez besoin d'un ensemble de lignes vide:SELECT 1 FROM dual WHERE NULL
Il peut être une sorte de "tout avoir ou perdre" scénario, lorsque tous les trois certificats sont nécessaires à la fois:
Si tout si les certificats est manquant, la totalité de la requête ne retourne rien.
si vous n'avez pas besoin de toute autre condition, sauf pour de la simple présence ou une absense d'une ligne,
CROSS JOIN
est ce que vous avez besoin.OriginalL'auteur
Je ne peux vraiment pas comprendre pourquoi ce serait la meilleure solution. Il semble plus efficace d'avoir juste une sorte de fichier de configuration qui contiendra les données dans les tables d'une ligne. Le coût de la connexion à la base de données et l'interrogation de l'un de ligne serait plus coûteux. Toutefois, si cela va être un certain genre de config pour la logique de base de données. Puis, cela ferait un peu plus de sens selon le type de base de données que vous utilisez.
OriginalL'auteur
- Je utiliser le totalement génial rails-les paramètres de plug-in pour ce http://github.com/Squeegy/rails-settings/tree/master
C'est vraiment facile à configurer et offre une belle syntaxe:
Souhaitez une liste de tous les paramètres?
Définir les valeurs par défaut pour certains paramètres de votre application. Ce sera la cause de la définition de paramètres pour revenir à la valeur Spécifiée, même si elles ne sont pas dans la base de données. Faire un nouveau fichier dans le répertoire config/initializers/paramètres.rb avec les éléments suivants:
OriginalL'auteur
Sauf s'il y a insérer des contraintes sur la table un timestamp pour la gestion des versions alors cela sonne comme une mauvaise idée.
OriginalL'auteur
Si votre base de données de votre application, alors il est probablement de sens que pour le stockage des données de configuration qui peut être requis par les procédures stockées de la mise en œuvre de la logique métier.
Si vous avez une application qui peut utiliser le système de fichiers pour stocker des informations, alors je ne pense pas qu'il y est un avantage de l'utilisation de la base de données de plus de un XML ou les fichiers à plat, à l'exception peut-être que la plupart des développeurs sont maintenant beaucoup plus versé dans l'utilisation de SQL pour stocker et récupérer des données que l'accès au système de fichiers.
OriginalL'auteur
Il y avait une table de ce genre dans un projet que j'ai hérité. C'était pour les données de configuration, et la raison qui a été donnée était qu'il fait pour les très requêtes simples:
Bon. Nous nous sommes convertis au généralisée de table de configuration:
Ce qui a permis à nos fins.
OriginalL'auteur
?
OriginalL'auteur
J'ai utilisé une donnée unique dans une base de données SQLite comme un compteur dans une page web dynamique. C'est la façon la plus simple que je peux penser à faire des threads (ou processus fiables pour être précis). Mais je ne suis pas sûr de savoir si c'est une bonne idée.
OriginalL'auteur
Je pense que la meilleure façon de traiter avec ces scénarios est d', plutôt que d'utiliser une base de données, utilisez le fichier de configuration (qui est généralement XML) ou faire votre propre fichier de configuration qui est lu au démarrage de l'application. Il ne faut que quelques minutes pour écrire le code pour lire le fichier.
L'avantage ici, c'est qu'il n'y a aucune chance accidentellement d'ajouter d'autres valeurs pour la même variable XML, et sa grande pour les tests, car vous n'avez pas besoin d'écrire beaucoup de code pour tester les différentes entrées, juste une simple modification de la valeur de texte et de ré-exécuter l'application.
OriginalL'auteur
Un usage qui pourrait en être de stocker la version actuelle de la base de données.
Si l'on stocker les versions de base de données pour les modifications de schéma, il serait nécessaire de résider à l'intérieur de la base de données elle-même.
Je suis actuellement analyser le schéma et la mise à jour en conséquence, mais pense que de se déplacer pour la gestion des versions. Sauf si quelqu'un a une meilleure idée.
- Je utiliser vb.net et sql express
OriginalL'auteur