2011-08-28 3 views
-1

J'ai une base de données de création et environ 8 tables dans la base de données ont également créé des clés primaires et des clés étrangères dans les tables appropriées. Mais lorsque j'insère des données dans la table primaire, mon autre tableau n'affiche pas les données mises à jour.php SQL DATABASE

Je veux dire, disons que j'ai une table qui a des données pour des noms comme; N (nom) N1 = George, N2 = Ross, N3 = Rim ... etc maintenant que signifie que j'ai la clé primaire N1, N2, N3 etc ..

Maintenant, quand j'insérer cette clé primaire dans Les autres tables devraient me montrer le nom comme George, Ross et Rim au lieu du numéro de clé primaire lui-même (N1, N2, N3).

Comment puis-je obtenir des noms à la place de PK lui-même?

+0

Vous avez donc besoin de croiser deux tables de références? vous pouvez joindre deux tables ensemble et ainsi vous obtenez toutes les informations dont vous avez besoin, mais vous avez besoin d'un peu plus d'informations sur votre conception que ce que vous avez là. Je suppose que vous utilisez MySQL? – Matt

+0

Je pense qu'avant d'utiliser une base de données il serait sage de lire sur les bases de données relationnelles et la normalisation pour apprendre la théorie. –

Répondre

4

Vous vous méprenez sur le concept des clés dans les bases de données relationnelles. Les clés sont là, pas pour copier des données de tables similaires mais pour montrer les relations entre les données dans différentes tables. Ils aident à comprendre comment les données entre les différentes tables sont liées - c'est de là que vient le nom "base de données relationnelle". Ils accélèrent également l'interrogation de ces données si elles sont indexées.

Vous pouvez en savoir plus sur l'utilisation des clés ici: Keys and normalization

0

Je ne comprends toujours pas ce que vous voulez faire exactement avec la base de données. mais laissez-moi vous montrer sur la base de la base de données et comment vous devriez l'utiliser. Considérez un tableau users où vous allez stocker les données liées à l'utilisateur.

CREATE TABLE `users` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(50) NOT NULL, 
    `email` varchar(50) DEFAULT NULL, 
    `phone` varchar(30) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
); 

la colonne id détient la clé primaire et un attribut appelé auto_increment, maintenant ce que cela signifie est chaque fois que vous insérez un enregistrement à cette table l'attribut id s'incrémenté et vous n'avez pas à vous soucier d'insérer toute valeur dans cette colonne parce que votre base de données prendra soin de cela. par exemple, jetez un coup d'œil à la requête d'insertion ci-dessous.

INSERT INTO users(name,email,phone) VALUES('First Name', '[email protected]', '9999999999'); 
INSERT INTO users(name,email,phone) VALUES('Second Name', '[email protected]', '8888888888'); 
INSERT INTO users(name,email,phone) VALUES('Third Name', '[email protected]', '2222222222'); 
INSERT INTO users(name,email,phone) VALUES('Fourth Name', '[email protected]', '3333333333'); 

avez-vous vu que vous n'avez pas inséré une id ici. C'est parce que c'est la base de données qui va gérer la logique. maintenant le premier enregistrement tiendra la valeur 1 la deuxième aura 2 le troisième 3 et le quatrième 4 et ainsi de suite.

espérons que cela vous aide.