Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 624

 

1 Zum Seitenanfang

Samstag, 9. Juli 2011, 12:47

Datenbank verwurschtelt mit Edit

SQL

  Spoiler Spoiler


MySQL-Abfrage(n)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
-- phpMyAdmin SQL Dump
-- version 2.9.1.1-Debian-13
-- http://www.phpmyadmin.net
-- 
-- Host: localhost
-- Erstellungszeit: 08. Juli 2011 um 15:52
-- Server Version: 5.0.32
-- PHP-Version: 5.2.0-8+etch16
-- 
-- Datenbank: `wh24405sql5`
-- 

-- --------------------------------------------------------

-- 
-- Tabellenstruktur für Tabelle `shopping`
-- 

CREATE TABLE `shopping` (
  `article` varchar(45) character set utf8 collate utf8_unicode_ci NOT NULL,
  `shop` varchar(45) character set utf8 collate utf8_unicode_ci default NULL,
  `date` date NOT NULL,
  `unit` int(2) default NULL,
  `unit_price` decimal(4,2) default NULL,
  `user_id` int(11) NOT NULL,
  KEY `fk_shopping_user` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- 
-- Daten für Tabelle `shopping`
-- 


-- --------------------------------------------------------

-- 
-- Tabellenstruktur für Tabelle `user`
-- 

CREATE TABLE `user` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(45) collate utf8_unicode_ci default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=9 ;

-- 
-- Daten für Tabelle `user`
-- 

INSERT INTO `user` (`id`, `name`) VALUES 
(1, 'Andreas'),
(3, 'Katrin');

-- 
-- Constraints der exportierten Tabellen
-- 

-- 
-- Constraints der Tabelle `shopping`
-- 
ALTER TABLE `shopping`
  ADD CONSTRAINT `fk_shopping_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;



Fehler:

Zitat

Cannot add or update a child row: a foreign key constraint fails (`wh24405sql5/shopping`, CONSTRAINT `fk_shopping_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)


Ich hab da was verwurschtelt mit dem foreign key. user_id war auf primary gesetzt und da konnt ich keine doppelten ids verwenden, da hab ich das gelöscht und jetzt kann ich nichts mehr in die tabelle shopping einfügen...

Ja das mit dem löschen war nix :) Wie krieg ich das wieder hin? Mit den foreign key hab ichs net so, vorralem net in phpmyadmin

Edit:
Vielleicht frag ich mal anders, wie muss ich die Zusammenhänge bzw. Beziehungen setzten in MYSQL Workbench damit die Einträge in Tabelle User den Einträgen in Tabelle shopping zugeordnet werden. Die Spalte user_id soll die id des User entsprechen. Soll aber gleichzeitig auch mehrmals verwendet werden können also kein Unique.
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Josephine« (9. Juli 2011, 12:47)

 

cccpmik

Foren Gott

Dabei seit: 04.09.2007

Beiträge: 2 999

 

2 Zum Seitenanfang

Samstag, 9. Juli 2011, 14:19

du brauchst eine tabelle user , eine tabelle waren und eine tabelle shopping. die ware hat sowas wie beschreibung, preis, bild etc die tabelle shopping hat dann

user_id, item_id , eventuell datum wann gekauft und anzahl oder so.. aus user_id und item_id kannst du ein kombinierten primärschlüssel machen somit können mehrere user mehrere items kaufen
Mein kleines Projekt
-Cruel Online-
 

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 624

 

3 Zum Seitenanfang

Sonntag, 10. Juli 2011, 00:34

Danke werd ich gleich morgen versuchen
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
 

Ego

Routinier

Dabei seit: 22.07.2009

Beiträge: 322

 

4 Zum Seitenanfang

Sonntag, 10. Juli 2011, 14:09

Hallo Josephine,

zu der letzten Frage.
du könntest den Namen vom CONSTRAINT weglassen,
MySQL würde dann einen eigenen Namen vergeben.

MySQL-Abfrage(n)

59
60
61
62
63
-- 
-- Constraints der Tabelle `shopping`
-- 
ALTER TABLE shopping
  ADD CONSTRAINT FOREIGN KEY (user_id) REFERENCES `user` (id) ON DELETE NO ACTION ON UPDATE NO ACTION;


irgendwie beharkt sich das mit dem schon definiertem KEY in Zeile 26
also könnte man auch folgendes Statement vorher einfügen um das FK_shopping_user zu entfernen

MySQL-Abfrage(n)

61
ALTER TABLE shopping DROP INDEX fk_shopping_user ;


2 zusätzliche Anmerkungen:
  • ist das DEFAULT CHARSET=latin1 für die Tabelle shopping so gewollt?
  • die Begriffe user, name und date sind Schlüsselwörter von MySQL,
    wenn man Schlüsselwörter für Tabellen und Spalten verwendet und dann mal vergisst sie zu maskieren (also in eckige Anführungszeichen ` zu setzen) KANN das zu Fehlern führen ... und (jetzt kommt der Hauptgrund) das ganze sieht mit syntax highlighting komisch aus ;)

Gruß
Ego
 

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 624

 

5 Zum Seitenanfang

Sonntag, 10. Juli 2011, 15:43

Ich hab da mal was erstellt im Workbench und wollte mal fragen ob das so Richtig ist: http://imageshack.us/photo/my-images/809/workbench.png/

Ich wollte noch sowas in der Art machen, das man bestimmte Waren zb. Zigaretten für bestimmte user rausrechnen kann. Dazu müsste ich doch dann wieder ne neue tabelle mit user_id und goods_id, name machen und die tabelle irgendwie goods_vip nennen oder so...
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
 

Ego

Routinier

Dabei seit: 22.07.2009

Beiträge: 322

 

6 Zum Seitenanfang

Sonntag, 10. Juli 2011, 19:30

hallo,

so wie ich das sehe hast Du den Vorschlag von CCCPMIKE umgesetzt, nur beim Preis gehst Du einen anderen Weg.
Ich glaube dafür solltest Du dir mal etwas zum Thema Normalisierung anlesen - nicht nur Wikipedia, das soll mehr der Erklärung des Begriffs dienen.

Zu der Frage ob das so richtig ist - keine Ahnung :D
Ich weis leider nicht was Du machen willst - wie sieht die Aufgabenstellung aus? was ist das Ziel?
Eventuell kannst Du das genauer ausführen, das es irgendwas mit ner Artikelverwaltung bzw Shopsystem werden soll sieht man ja an den Bezeichnungen,
aber wozu ist z.B der Wert shop VARCHAR(45) in Tabelle shopping?

Das Problem mit dem selektiven Warenangebot könnte man über das alter regeln
der User bekommt ein Alter und die Ware bekommt auch auch einen Alterswert ab dem es gekauft werden darf,
die Prüfung kann man bestimmt wieder mit CONSTRAINTS machen ...
bzw bei der anzeige im SELECT nur Waren anzeigen wo der Wert tabelle_Goods.aterswert kleinergleich dem Wert tabelle_User.alter ... usw usf

oder man gibt den Leuten und Waren einen Ansehen-Wert - Standing - und je nach dem wie das Benutzer-Ansehen ist darf er exklusivere Waren erwerben ... da wird sich schon was finden - wenn erstmal das Ziel definiert ist :)

Gruß
Ego
 

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 624

 

7 Zum Seitenanfang

Sonntag, 10. Juli 2011, 21:01

Naja Ziel ist es so eine Ausgabe zu machen:



Uploaded with ImageShack.us

Die Ausgabe funktoniert auch wunderbar, leider die Eingabe nicht mehr, ich werde mal deinen Vorschlag ausprobieren :)
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
 

Ego

Routinier

Dabei seit: 22.07.2009

Beiträge: 322

 

8 Zum Seitenanfang

Dienstag, 12. Juli 2011, 20:20

so wie es aussieht geht das in Richtung Haushaltsbuch - dann ist es durchaus Sinnvoll den Unit-Preis in der Tabelle zu lassen wo er ist.

fragt sich aber- wie willst Du die besonderen Waren heraus rechnen?
wenn du z.B ein fixes Budget hast muss ja der Betrag irgendwo abgebucht werden.

außerdem ist rauchen doch ehh doof :D
 

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 624

 

9 Zum Seitenanfang

Dienstag, 12. Juli 2011, 20:59

Ich hab die Datenbank zur Zeit so gestaltet:



Da ich später auch ein autocomplete machen will für die Artikel, die Shops hab ich mir gedacht könnte man ja auch schon anlegen und zum auswählen anbieten, so viel supermärkte gibt es ja in deutschland auch net. Was hälst du davon?
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
 

cccpmik

Foren Gott

Dabei seit: 04.09.2007

Beiträge: 2 999

 

10 Zum Seitenanfang

Dienstag, 12. Juli 2011, 22:12

also ein laden bestellt seine artikel, diese artikel werden von personen gekauft. das Artikel hat ein verkaufspreis. ich würde folgende tabellen anlegen:

markets
id | name | weitere daten

customer
id | name | budget usw..

goods

id | name | preis | weitere daten

dann kannste im mysql workbench eine n:m beziehung erstellen zwischen customer und goods und markets und goods dann kriegste automatisch generierte tabellen

customer_has_goods
customer_id | good_id

dann machste noch ein feld date und quantity zu customer_has_goods

und markets_has_goods
market_id | good_id

somit kannst du dann anhand des benutzers zurück verfolgen, was für sachen er eingekauft hat, wieviel es gekostet hat und wo er eingekauft hat

MySQL-Abfrage(n)

1
2
3
4
5
6
7
SELECT g.name as good_name,g.preis as preis,g.quantity as anzahl,m.name as marketname
FROM customer c,markets m, goods g,customer_has_goods cg, markets_has_goods mg
WHERE c.id = cg.customer_id 
AND g.id = cg.good_id
AND m.id = mg.market_id
AND g.id = mg.good_id
AND c.id = 1


mit unterschiedlichen GROUP BY funktionen sowie SUM im SQL kannst du dann alles anpassen wie es dir passt. am besten alles im PhpMyAdmin antesten

MFG
Mein kleines Projekt
-Cruel Online-
 

Ähnliche Themen