Wyobraźmy sobie sytuację w której administrator serwisu randkowego dodaje do bazy danych np cechy osobowości, a użytkownik podczas rejestracji wybiera, które z wymienionych cech dotyczą jego osoby. I teraz pytanie jak należy taką sytuację odzwierciedlić w bazie danych. Czy:
a) stworzyć osobną tabelę w której połączymy id użytkownika z id cechy osobowości
b) dodać dużą liczbę kolumn w tabeli z użytkownikami z miejscem na id cechy i liczyć na to, że ich
Dobrze rozumiem że baza NoSQL pozbywa się całkiem relacji, więc wiele danych w niej jest po prostu dublowana?
Załóżmy bazę z dwoma tabelami, autorzy i książki, tabela autorzy zawiera autorów: imię, nazwisko, rok urodzenia, skąd pochodzą, narodowość i masę innych rzeczy a książki to tytuł, gatunek, ilość stron itd...
W podejściu relacyjnej bazy w książkach mielibyśmy id do autora taki zwykły integer.
W podejściu NoSQL do x książek tego samego autora przypisywane
@Ginden: No tak, myślę trochę pod sql, gdzie do książek dopisuje się autora, w nosqlowym rozwiązaniu to jest bardziej naturalne i do autora przypisuje się książki, w takim wypadku to ma sens i dane się nie dublują w rozwiązaniu

[
{autor: [
{książka1},
{książka2}
],
{autor2: {...},...}...]

Tylko pozostaje jeszcze jedna rzesz; oczywiście, daje nam to pewną szybkość odczytu jeśli chcemy wyciągać dane według autorów, ale jeśli autorzy nas nie interesują
@michal__q: zależy jaka NoSQL. NoSQL to tylko nazwa nurtu, jest kilka rodzajów baz i "struktur danych". Np. grafowa baza danych da Ci dużo lepszą wydajność na danych które przedstawiają relację, bo naturalnie je odzwierciedla (w przeciwieństwie do relacyjnych baz danych ;) ). Na grafie od jednego autora (węzeł grafu) masz x relacji do książek które napisał. W przypadku wspomnianej śmierci autora również zmieniasz tylko info w węźle autora, nie musisz nic
18+ nsfw

Zawiera treści 18+

Ta treść została oznaczona jako materiał kontrowersyjny lub dla dorosłych.

#programowanie #mysql #bazydanych

Jak przy tworzeniu tabeli zrobić ogranicznie zakresu w kolumnie typu FLOAT?
W google coś pisze o partycjonowaniu ale po co mi całe partycjnowanie jeśli chce np. mieć w tym polu wartości od 4.0 do 10.0?
Przydałoby mi się coś takiego jak BETWEEN AND ale to działa tylko przy SELECT a ja chce przy CREATE.
Pewnie to proste pytanie tylko kurde ja nie bawiłem się jakoś dogłębnie do tej pory
@Kumagoro: Access to program bazodanowy a nie caly silnik jak MS SQL, MySQL etc, i rozna ma funkcjonalnosc. Zalezy po co i jaka "baza danych". "Baza danych" moze byc i plik w notatniku w ktorym sobie wpiszesz jakies informacje. Najwazniejsza roznica moim zdaniem jednak to prostota obslugi i interfejs. Do obslugi bazy potrzebujesz "db admina" nawet do prostych zapytan, nie mowiac juz o podlaczeniu jakichs aplikacji zeby korzystaly z bazy.

Accessa
#sql #bazydanych

sqlite

czy da się w sqlite w prosty sposób przeindeksować tabelę w bazie danych
na przykładzie:
mam tabelę xx, pole id autoicrement, not null, primary key od 0 do 20
robię delete elementu 10, czy da się w łatwy sposób teraz 11element na miejsce 10, 12 na miejsce 11, itd
#sql #bazydanych

W nawiązaniu do tego komentarza by nie być gołosłownym

W PostgreSQL 8.4 działa:

SELECT 1 collation
W 9.x należy użyc:

SELECT 1 AS collation
W 9.1 działa:

SELECT * from (select 1) collation

No ale w 9.2+ należy użyć:

SELECT * from (select 1 ) as "collation"

Pamiętajmy by nie pomijać opcjonalnych słów, nawet jeśli nie ma szans by coś stało się reserved keyword w przyszłości to i tak warto
Po co używać cudzysłów jak się nie używa dużych liter, spacji itp. Jest w tym jakiś głębszy sens ?
@m504: Sens jest taki że inaczej nie działa, w klauzuli SELECT może być bez ale we FROM jest wymagane. A stosowanie spacji, znaków specjalnych, dużych liter i innych nazw które trzeba eskejpować jest ogólnie kiepskim pomysłem.
Mirki, szybka sprawa #linux, #serwery, #serwerownia, #bazydanych. Prowadzę serwis internetowy, na którym niestety niescachowane podstrony powodują spore obciążenie bazy danych. Po uruchomieniu zdań cron, zauważyłem że z serwera wychodzą zapytania GET na podstrony zżerające zasoby. Póki co odfiltrowałem sobie na firewall ten ruch. Powiedzcie mi, w jaki sposób mogę namierzyć co na serwerze wykonuje zapytania wychodzące? Jaki proces, jaki plik, cokolwiek....
#januszeinformatyki
@JavaEngineer: Po polsku nic nie znajdziesz, właściwie to nie powinieneś nawet szukać. Jeśli chodzi o to co pytasz to większość znajdziesz w manualu:
http://www.postgresql.org/docs/current/static/
Warto też odwiedzić:
http://www.depesz.com/
http://www.postgresonline.com/
http://planet.postgresql.org/

Zakładam że http://use-the-index-luke.com/ już znasz ale tam też jest sporo o Postgresie, no a przynajmnie o przewadze współczesnych baz danych nad MySQL.
@trebeter: I drugie pytanie - czy tabela2 ma jakiś klucz obcy do tabela1? Bez klucza (czyli powiązania między tymi tabelami) nie będziesz w stanie skojarzyć który wiersz z tabela2 ma wystąpić z którym wierszem z tabela1.
Taka tabela automatycznie sortuje mi się po wartościach w kolumnie [Code], jak ustawić żeby automatycznie sortowała się po [Name]? Chodzi mi o automatyczne sortowanie, a nie o order by.
CREATE TABLE [dbo].[Languages] (
[Code] NVARCHAR (20) NOT NULL,
[Name] NVARCHAR (80) NOT NULL,
CONSTRAINT [PK_dbo.Languages] PRIMARY KEY CLUSTERED ([Code] ASC)
);
Ustawić [Name] jak primary key? Czy może zamienić kolejność kolumn? Czy można to zrobić jakoś inaczej?

#bazydanych