none
Aplicação Web com "n" Usuários (Design de BD) RRS feed

  • Pergunta

  • Boa tarde pessoal

    Estou criando para fins academicos, uma aplicação web com acesso a banco de dados, onde as tabelas são comuns a todos os usuários, porém 
    cada usuário só tem acessos aos seus dados privados nestas tabelas. Como por exemplo uma tabela "dados pessoais" onde temos todos os dados de todos os usuários, e quando determinado usuario passa pelo login verá na sua pagina apenas os seus dados algo como o orkut.

    Já estou usando as ferramamentas de membership e profile do asp.net , para algumas informações como foto do usuário e dados pessoais,  o problema acontece nas tabelas que eu criei no banco, que devem incluir campos com inteiros, decimais, chaves primarias com incremento, tudo relacionado com a informação de cada usuário.

    Então eu gostaria de uma aplicação em que quando o usuario fosse cadastrado, tivesse todo acesso aos seus dados(após introduzi-los) e ter o poder de editá-los utilizando a interface comum, e as tabelas de comum uso tb.

    Vcs tem uma dica de tutorial ou algo assim com o modelo de uma banco d dados assim, e os procedimentos de edição e seleção dos dados por usuário?

    EU utlizo as seguintes tecnologias neste trabalho:

    VS 2005
    C#
    ASP.NET framework v 2....
    Ajax tool kit para o framework v2
    SQL Server 2005 (em um servidor não local, já tenho dominio)


    Obrigado








    sábado, 23 de janeiro de 2010 19:39

Respostas

Todas as Respostas

  • Alchemicos,

    Acredito que você terá uma certa dificuldade em encontrar um modelo que seja ideal para sua necessidade.

    Você já definiu algum estrutura do seu banco de dados?
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    sábado, 23 de janeiro de 2010 20:22
  • Ola Junior bom já defini sim uma estrutura mas tenho testado algumas coisas, neste momento está assim:






      Login.aspx  
    Validação com membership
      SQLSERVER  
    Tabela A
    dados tabela
    Coluna user
    Tabela B dados tabela
    Coluna user
    Tabela n dados tabela
    Coluna user
         
    Pagina

    user.tabelaA
    Editar Novo Deletar


    Primeiramente utilizei do wizard do asp.net no meu servidor do SQl Server para criar aquele banco de dados "aspnetdb"
    porém lá só esta com outro nome, para fazer a parte de segurança do aplicativo.

    Depois defini os roles com o web.config para restringir as pastas do diretorio onde está o aplicativo, 


    No sql server criei um a tabela master que tem o UserName do usuario, além da padrão, e alguns dados.

    Cada tabela a seguir é relacionada pelo user name ou o ID do user, e o comando SQL tem parametros de controles para seleção.

    Agora a parte engraçada, na página por exemplo pego o controle logname, passo para uma caixa de texto sem borda e fonte transparente,
    esse é meu parametro para a consulta SQL que retornara a tabela, deu certo!

    Mas o problema é a edição pois o update nem o insert funcionam com este metodo, quando vou ao MSSMS vejo que os dados de UserName e ID (user) não estão lá, somente os outros dados, logo quando a pagina entra não reconhece os novos dados já que não temos os parametros lá...

    Então como faço para editar (inserir) dados em varias tabelas? Pois tenho este campo em comum em todas e só funciona assim...

    O ideal conforme o desenho acima seria a pagina fazer o select da tabela em um controle qualquer, o usuario edita os campo importantes, E lá sejam salvos tb os paramtros sem que o usuario perceba.

    Por exemplo na tabela A
    O Usuario edita os campos de dados da tabela A
    sem ter que digitar o username  o ID do assunto da tabela "A" ou o seu ID de user,
    mas lá no SQL tudo isso é salvo para que o sistema funcione.

    É assim que estou fazendo,  mas achei tão engraçado que vim pedir a ajauda de alguma técnica de design certa para isso...

    ....


    sábado, 23 de janeiro de 2010 22:17
  • Boa Tarde,

    Se os dados dos usuários são cadastrados por linha, você deve aplicar o conceito de row level security.
    Procure no site da Microsoft, há um white paper sobre esse assunto.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    A quantidade de linhas fala por si só ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!926.entry
    Classifique as respostas. O seu feedback é imprescindível
    • Sugerido como Resposta Gustavo Maia Aguiar domingo, 24 de janeiro de 2010 19:32
    • Marcado como Resposta AlchemicoS terça-feira, 26 de janeiro de 2010 00:23
    domingo, 24 de janeiro de 2010 19:32
  • Boa Noite Gustavo

    Li o paper "Implemeting Row-and-Cell-Level Security in Classified Database Using SQL Server 2005" cheguei a conclusão que esta é a técnica  ideal para o que procuro realizar, mas ao mesmo tempo fiquei meio perdido, em como começar, entendi bem o fundamento de Labels e Markings, só não entendi como colocar na prática .

    Ao mesmo tempo encontrei um artigo que se aplica ao SQL 2000, que também trabalha com views porém somente com alguns sp. 

    Gostaria de perguntar a vocês se posso aplicar este artigo no SQL Server 2005.....

    Obrigado

    Abraço

    terça-feira, 26 de janeiro de 2010 00:38