Creazione Database Hardware

Diego Aguiari

Nuovo Utente
23 Giu 2013
14
0
0
Salve,

come il titolo lascia intuire voglio creare un database che contenga le specifiche di un bel po' di pezzi hardware ( sì lo so è da pazzi vista l'evoluzione informatica).

Data la mia totale ignoranza in termini di database chiedo a voi come fare^^

Vi faccio un esempio di tabelle del database giusto per dare un'idea:

Tabella CPU avrà i campi ID, frequenza, nome, codename, socket, architettura (e altri, tanto l'importante è il concetto aggiungere o togliere un campo non penso cambi la struttura del database)

Il database dovrà poi essere utilizzato in questo modo, l'utente digita in un text field per esempio Intel i5 e appare un elenco dove l'utente può selezione per esempio i5 3570k oppure i5 4770 e in automatico vengono caricati i campi del database da qualche parte che ancora devo decidere( in linea di massima mi serve solo stamparli a video)

Come posso fare? Tutti le componentistiche hardware hanno in comune i campi anno, nome, produttore.

Spero di essere stato abbastanza chiaro^^

Grazie in anticipo.
 
Mi hanno consigliato di usare una relazione IS-A e di implementare il tutto così :

crei l'entita COMPONENTE dove metti gli attributi comuni a tutti i componenti.

Poi le varie entita cpu ecc con i soli attributi aggiuntivi...

Qualcuno sa come implementare in MySQL suddetta relazione? mi basta proprio lo schema di base la prima entità (componenti) con una figlia (CPU)

Grazie in anticipo :)
 
Mi hanno consigliato di usare una relazione IS-A e di implementare il tutto così :



Qualcuno sa come implementare in MySQL suddetta relazione? mi basta proprio lo schema di base la prima entità (componenti) con una figlia (CPU)

Grazie in anticipo :)


Ciao,
prova a vedere se ti può essere di aiuto la proposta indicata in questo post: tabella prodotto con relativi attributi

Se hai bisogno di ulteriori info, fammi sapere

Ciao



A quick solution is a shortcut to troubleshooting
HolidaySoft.it - Gestionali, Database, SitiWeb
GarganoSapori.it - Olio ExtraVergine del Gargano
OsteriaORistorante.it - Crea la Vetrina per il tuo Ristorante!
 
Alla fine, prendendo spunto da un po' di siti ho abbozzato questo:
Codice:
CREATE TABLE `componenti` (
	`ID` VARCHAR(4) NOT NULL,
	`anno` INT(4) NOT NULL,
	`produttore` VARCHAR(30) NOT NULL,
	`nome` VARCHAR(40) NOT NULL,
	PRIMARY KEY (`ID`)
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB;

CREATE TABLE `cpu_tab` (
	`componenti_ID` VARCHAR(4) NOT NULL,
	`socket` VARCHAR(5) NOT NULL,
	`codename` VARCHAR(20) NOT NULL,
	`architettura` VARCHAR(3) NOT NULL,
	`clock` INT(4) UNSIGNED NOT NULL,
	`score` INT(6) NULL DEFAULT NULL,
	PRIMARY KEY (`componenti_ID`),
	CONSTRAINT `FKcpu_tab` FOREIGN KEY (`componenti_ID`) REFERENCES `componenti` (`ID`) ON DELETE CASCADE
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB;

Dici che può andare? :)
 
Io farei tutto su un'unica tabella a meno che non ci sia una motivazione valida.
Nel caso tuo basta decidere cosa e come mostrare all'utente, quindi è molto più comodo fare tutto in un'unica tabella.
 
Alla fine, prendendo spunto da un po' di siti ho abbozzato questo:
Codice:
CREATE TABLE `componenti` (
	`ID` VARCHAR(4) NOT NULL,
	`anno` INT(4) NOT NULL,
	`produttore` VARCHAR(30) NOT NULL,
	`nome` VARCHAR(40) NOT NULL,
	PRIMARY KEY (`ID`)
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB;

CREATE TABLE `cpu_tab` (
	`componenti_ID` VARCHAR(4) NOT NULL,
	`socket` VARCHAR(5) NOT NULL,
	`codename` VARCHAR(20) NOT NULL,
	`architettura` VARCHAR(3) NOT NULL,
	`clock` INT(4) UNSIGNED NOT NULL,
	`score` INT(6) NULL DEFAULT NULL,
	PRIMARY KEY (`componenti_ID`),
	CONSTRAINT `FKcpu_tab` FOREIGN KEY (`componenti_ID`) REFERENCES `componenti` (`ID`) ON DELETE CASCADE
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB;

Dici che può andare? :)

Ciao,
con la soluzione "TUTTO SU UNA TABELLA" o "TABELLA CPU" sei condizionato a cambiare la struttura delle tabelle ogni volta che devi aggiungere o eliminare un attributo del componente. Invece la soluzione con le tre tabelle con tabella centrale di legame, puoi aggiungere "n" attributi del componente e inoltre puoi gestire anche diversi componenti (cpu, mem, hd), il tutto in modo dinamico con poche modifiche alla struttura

Ciao
Mik


A quick solution is a shortcut to troubleshooting
HolidaySoft.it - Gestionali, Database, SitiWeb
GarganoSapori.it - Olio ExtraVergine del Gargano
OsteriaORistorante.it - Crea la Vetrina per il tuo Ristorante!
 
Ma hai pensato a quella struttura come se fosse una relazione molti:molti tra prodotti e specifiche? Se sì può starci. Perché in questo modo si crea la terza tabella che è di relazione.
 
All'inizio avevo pensato di fare un'unica tabella, ma poi avrei avuto mille mila attributi da gestire, ogni componente hardware ha diverse specifiche :)

Uhm diciamo che ho pensato alla struttura come, in componenti metto tutti i campi comuni a tutti i componenti e linko alle varie tabelle specifiche :D

cioè vi faccio un esempio di cosa contengono le due tabelle:

componenti:
ID -> cpu1
nome -> fx-6300
produttore ->amd
anno -> 2012

cpu_tab
comp->id cpu1
clock-> 3511
score -> 6480
socket -> am3+
architettura -> x64
codename -> vishera

poi ci sarà una cpu2, cpu3 ecc...

Il problema è che, una volta fatto questo database viene la parte incasinata :D

Ovvero devo aggiungere un campo di testo all'interno del sito, e fin qui tutto ok, fare in modo che se da questa pagina del sito http://tecnomercatino.it/item/new viene selezionata una categoria allora tramite uno script jquery viene creato un "autocomplete" con i record solamente della categoria selezionata, ovviamente deve essere una cosa dinamica(e non so minimamente come fare ciò).
Idee, consigli, aiuti, qualsiasi cosa è ben accetta :)
 
La mia opinione è:
1) fare come stai facendo (ti complichi la vita) se poi devi creare dei filtri e quindi delle ricerche per tipi diversi di componenti; ad esempio se volessi vedere tutti i pc di una marca (scelta) che abbiano un display da tot pollici (scelta) allora conviene fare delle selezioni sul db e avere tutto organizzato invece di usare delle regex.

2) mettere tutto in una tabella se tutte le specifiche del prodotto sono SOLO a titolo informativo. Quindi possono essere viste come un campo testo (SPECIFICHE) nel quale metterai tutte le specifiche magari in un formato adatto per garantirti una certa visualizzazione piuttosto che altre.
 
In realtà è molto semplice ottenere tutto :D
Basta una query di questo tipo
PHP:
$table="componenti";

$table2="cpu_tab";

$sqlquery ="SELECT * FROM $table as o, $table2 as c WHERE o.ID=c.componenti_ID AND produttore LIKE '%AMD%'";

e ottengo tutte le cpu amd :)
Poi giocandosela con php e modificando $table $table2 e il LIKE ottengo quello che voglio :D
 

Discussioni simili